Hi. I will ack connector part of course, but this hunk is actually quite bad. > +static void shutdown_onchannelcallback(void *context) > +{ > + struct vmbus_channel *channel = context; > + u8 *buf; > + u32 buflen, recvlen; > + u64 requestid; > + u8 execute_shutdown = false; > + > + struct shutdown_msg_data *shutdown_msg; > + > + struct icmsg_hdr *icmsghdrp; > + struct icmsg_negotiate *negop = NULL; > + > + buflen = PAGE_SIZE; > + buf = kmalloc(buflen, GFP_ATOMIC); > + > + vmbus_recvpacket(channel, buf, buflen, &recvlen, &requestid); Boom. I did not read further, since this function returns void and thus can not propagate error, which is likely not a good idea. -- Evgeniy Polyakov _______________________________________________ devel mailing list devel@xxxxxxxxxxxxxxxxxxxxxx http://driverdev.linuxdriverproject.org/mailman/listinfo/devel