Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

nbd: zero from and len fields in NBD_CMD_DISCONNECT.

Len field is already set to zero, but not the from field which is sent
as 0xfffffffffffffe00. This makes no sense, and may cause confuse
server implementations doing sanity checks (qemu-nbd is an example.)

Signed-off-by: Hani Benhabiles <hani@linux.com>
Cc: Paul Clements <paul.clements@us.sios.com>
Cc: Paul Clements <Paul.Clements@steeleye.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>

authored by

Hani Benhabiles and committed by
Linus Torvalds
04cfac4e b1de0d13

+2 -5
+2 -5
drivers/block/nbd.c
··· 243 243 struct nbd_request request; 244 244 unsigned long size = blk_rq_bytes(req); 245 245 246 + memset(&request, 0, sizeof(request)); 246 247 request.magic = htonl(NBD_REQUEST_MAGIC); 247 248 request.type = htonl(nbd_cmd(req)); 248 249 249 - if (nbd_cmd(req) == NBD_CMD_FLUSH) { 250 - /* Other values are reserved for FLUSH requests. */ 251 - request.from = 0; 252 - request.len = 0; 253 - } else { 250 + if (nbd_cmd(req) != NBD_CMD_FLUSH && nbd_cmd(req) != NBD_CMD_DISC) { 254 251 request.from = cpu_to_be64((u64)blk_rq_pos(req) << 9); 255 252 request.len = htonl(size); 256 253 }