<div dir="ltr">Merged.<div>Thanks.</div></div><div class="gmail_extra"><br><div class="gmail_quote">On Wed, Aug 10, 2016 at 11:42 AM, Hannes Reinecke <span dir="ltr"><<a href="mailto:hare@suse.de" target="_blank">hare@suse.de</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div class="HOEnZb"><div class="h5">On 08/10/2016 11:32 AM, <a href="mailto:tang.junhui@zte.com.cn">tang.junhui@zte.com.cn</a> wrote:<br>
> From: "tang.junhui" <<a href="mailto:tang.junhui@zte.com.cn">tang.junhui@zte.com.cn</a>><br>
><br>
> 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.<br>
><br>
> Signed-off-by: tang.junhui <<a href="mailto:tang.junhui@zte.com.cn">tang.junhui@zte.com.cn</a>><br>
> ---<br>
> multipathd/uxlsnr.c | 8 +++++---<br>
> 1 file changed, 5 insertions(+), 3 deletions(-)<br>
><br>
> diff --git a/multipathd/uxlsnr.c b/multipathd/uxlsnr.c<br>
> index f114e59..fa29b2a 100644<br>
> --- a/multipathd/uxlsnr.c<br>
> +++ b/multipathd/uxlsnr.c<br>
> @@ -145,7 +145,7 @@ void * uxsock_listen(uxsock_trigger_<wbr>fn uxsock_trigger, void * trigger_data)<br>
> pthread_cleanup_push(uxsock_<wbr>cleanup, NULL);<br>
><br>
> condlog(3, "uxsock: startup listener");<br>
> - polls = (struct pollfd *)MALLOC(MIN_POLLS + 1);<br>
> + polls = (struct pollfd *)MALLOC((MIN_POLLS + 1) * sizeof(struct pollfd));<br>
> if (!polls) {<br>
> condlog(0, "uxsock: failed to allocate poll fds");<br>
> return NULL;<br>
> @@ -167,9 +167,11 @@ void * uxsock_listen(uxsock_trigger_<wbr>fn uxsock_trigger, void * trigger_data)<br>
> }<br>
> if (num_clients != old_clients) {<br>
> struct pollfd *new;<br>
> - if (num_clients < MIN_POLLS) {<br>
> + if (num_clients <= MIN_POLLS && old_clients > MIN_POLLS) {<br>
> new = REALLOC(polls, (1 + MIN_POLLS) *<br>
> sizeof(struct pollfd));<br>
> + } else if (num_clients <= MIN_POLLS && old_clients <= MIN_POLLS) {<br>
> + new = polls;<br>
> } else {<br>
> new = REALLOC(polls, (1+num_clients) *<br>
> sizeof(struct pollfd));<br>
> @@ -181,7 +183,7 @@ void * uxsock_listen(uxsock_trigger_<wbr>fn uxsock_trigger, void * trigger_data)<br>
> pthread_yield();<br>
> continue;<br>
> }<br>
> - num_clients = old_clients;<br>
> + old_clients = num_clients;<br>
> polls = new;<br>
> }<br>
> polls[0].fd = ux_sock;<br>
><br>
</div></div>Thanks for catching this.<br>
<br>
Reviewed-by: Hannes Reinecke <<a href="mailto:hare@suse.com">hare@suse.com</a>><br>
<br>
Cheers,<br>
<br>
Hannes<br>
<span class="HOEnZb"><font color="#888888">--<br>
Dr. Hannes Reinecke Teamlead Storage & Networking<br>
<a href="mailto:hare@suse.de">hare@suse.de</a> <a href="tel:%2B49%20911%2074053%20688" value="+4991174053688">+49 911 74053 688</a><br>
SUSE LINUX GmbH, Maxfeldstr. 5, 90409 Nürnberg<br>
GF: F. Imendörffer, J. Smithard, J. Guild, D. Upmanyu, G. Norton<br>
HRB 21284 (AG Nürnberg)<br>
</font></span><div class="HOEnZb"><div class="h5"><br>
--<br>
dm-devel mailing list<br>
<a href="mailto:dm-devel@redhat.com">dm-devel@redhat.com</a><br>
<a href="https://www.redhat.com/mailman/listinfo/dm-devel" rel="noreferrer" target="_blank">https://www.redhat.com/<wbr>mailman/listinfo/dm-devel</a><br>
</div></div></blockquote></div><br></div>