On Fri, Oct 14, 2011 at 11:36:36PM -0700, Joe Perches wrote:
> This do {} while (1); seems like it could be simpler,
> less indented and less confusing if it used continues
> or gotos like below (if I wrote it correctly...)
> 
> loop:
>       ret = vmbus_bus_recvpacket_raw(device->channel, buffer,
>                                      bufferlen, &bytes_recvd, &req_id);
>       switch (ret) {
>       case -ENOBUFS:
>               /* Handle large packet */
>               bufferlen = bytes_recvd;
>               buffer = kzalloc(bytes_recvd, GFP_ATOMIC);
> /*
> Why kzalloc and not kmalloc?
> The stack variable packet is not memset to 0,
> why should buffer be zeroed?
> */
>               if (!buffer)
>                       return;
>               goto loop;
>       case 0:
>               if (bytes_recvd <= 0)
>                       goto loop;

In the original we called break here (which is equivelent to a
return).  Btw setting a stack variable and then returning immediately
like the original code did is pointless.

regards,
dan carpenter
_______________________________________________
devel mailing list
[email protected]
http://driverdev.linuxdriverproject.org/mailman/listinfo/devel

Reply via email to