[dm-devel] [PATCH] multipathd: fix memory allocation logic error for polls in uxsock_listen()
Christophe Varoqui
christophe.varoqui at opensvc.com
Wed Aug 10 09:49:16 UTC 2016
Merged.
Thanks.
On Wed, Aug 10, 2016 at 11:42 AM, Hannes Reinecke <hare at suse.de> wrote:
> On 08/10/2016 11:32 AM, tang.junhui at zte.com.cn wrote:
> > From: "tang.junhui" <tang.junhui at zte.com.cn>
> >
> > logic error exists in memory allocation for polls in uxsock_listen(),
> even if the allocated memory size meet the needs, it is still to realloc
> memory, which is not up to expectations.
> >
> > Signed-off-by: tang.junhui <tang.junhui at zte.com.cn>
> > ---
> > multipathd/uxlsnr.c | 8 +++++---
> > 1 file changed, 5 insertions(+), 3 deletions(-)
> >
> > diff --git a/multipathd/uxlsnr.c b/multipathd/uxlsnr.c
> > index f114e59..fa29b2a 100644
> > --- a/multipathd/uxlsnr.c
> > +++ b/multipathd/uxlsnr.c
> > @@ -145,7 +145,7 @@ void * uxsock_listen(uxsock_trigger_fn
> uxsock_trigger, void * trigger_data)
> > pthread_cleanup_push(uxsock_cleanup, NULL);
> >
> > condlog(3, "uxsock: startup listener");
> > - polls = (struct pollfd *)MALLOC(MIN_POLLS + 1);
> > + polls = (struct pollfd *)MALLOC((MIN_POLLS + 1) * sizeof(struct
> pollfd));
> > if (!polls) {
> > condlog(0, "uxsock: failed to allocate poll fds");
> > return NULL;
> > @@ -167,9 +167,11 @@ void * uxsock_listen(uxsock_trigger_fn
> uxsock_trigger, void * trigger_data)
> > }
> > if (num_clients != old_clients) {
> > struct pollfd *new;
> > - if (num_clients < MIN_POLLS) {
> > + if (num_clients <= MIN_POLLS && old_clients >
> MIN_POLLS) {
> > new = REALLOC(polls, (1 + MIN_POLLS) *
> > sizeof(struct pollfd));
> > + } else if (num_clients <= MIN_POLLS && old_clients
> <= MIN_POLLS) {
> > + new = polls;
> > } else {
> > new = REALLOC(polls, (1+num_clients) *
> > sizeof(struct pollfd));
> > @@ -181,7 +183,7 @@ void * uxsock_listen(uxsock_trigger_fn
> uxsock_trigger, void * trigger_data)
> > pthread_yield();
> > continue;
> > }
> > - num_clients = old_clients;
> > + old_clients = num_clients;
> > polls = new;
> > }
> > polls[0].fd = ux_sock;
> >
> Thanks for catching this.
>
> Reviewed-by: Hannes Reinecke <hare at suse.com>
>
> Cheers,
>
> Hannes
> --
> Dr. Hannes Reinecke Teamlead Storage & Networking
> hare at suse.de +49 911 74053 688
> SUSE LINUX GmbH, Maxfeldstr. 5, 90409 Nürnberg
> GF: F. Imendörffer, J. Smithard, J. Guild, D. Upmanyu, G. Norton
> HRB 21284 (AG Nürnberg)
>
> --
> dm-devel mailing list
> dm-devel at redhat.com
> https://www.redhat.com/mailman/listinfo/dm-devel
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://listman.redhat.com/archives/dm-devel/attachments/20160810/c50b0fc5/attachment.htm>
More information about the dm-devel
mailing list