On 08/10/2016 11:32 AM, tang.junhui@xxxxxxxxxx wrote: > From: "tang.junhui" <tang.junhui@xxxxxxxxxx> > > 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@xxxxxxxxxx> > --- > 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@xxxxxxxx> Cheers, Hannes -- Dr. Hannes Reinecke Teamlead Storage & Networking hare@xxxxxxx +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@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/dm-devel