nbd: Check magic before doing anything else
Subsystems (2)
PATCH 1/1 nbd: Check magic before doing anything else
We should check magic sequence in reply packet before trying to find request with it's request handle. This also solves the problem with "Unexpected reply" message beeing logged, when packet with invalid magic is received.
Signed-off-by Michal Feix <[email protected]>
---
drivers/block/nbd.c +9 -7
@@ -300,6 +300,15 @@ static struct request *nbd_read_stat(str lo->disk->disk_name, result); goto harderror; } + +if (ntohl (reply.magic) !=NBD_REPLY_MAGIC ) { +printk (KERN_ERR "%s: Wrong magic (0x%lx)\n" , + lo->disk->disk_name, + (unsigned long )ntohl (reply.magic)); + result = -EPROTO ; + goto harderror; + } + req =nbd_find_request (lo, reply.handle);if (unlikely (IS_ERR (req))) { result =PTR_ERR (req);
@@ -312,13 +321,6 @@ static struct request *nbd_read_stat(str goto harderror; } -if (ntohl (reply.magic) !=NBD_REPLY_MAGIC ) { -printk (KERN_ERR "%s: Wrong magic (0x%lx)\n" , - lo->disk->disk_name, - (unsigned long )ntohl (reply.magic)); - result = -EPROTO ; - goto harderror; - }if (ntohl (reply.error)) {printk (KERN_ERR "%s: Other side returned error (%d)\n" , lo->disk->disk_name,ntohl (reply.error));
Quoted 4 lines · Michal Feix
We should check magic sequence in reply packet before trying to find request with it's request handle. This also solves the problem with "Unexpected reply" message beeing logged, when packet with invalid magic is received.
Right. Again, we can't return NULL after pulling the request off the queue, so we better do this check first.
Andrew, these two look good to me.
Thanks,
Paul