summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMichal Feix <michal@feix.cz>2006-07-30 03:03:31 -0700
committerLinus Torvalds <torvalds@g5.osdl.org>2006-07-31 13:28:39 -0700
commite4b57e0842621f597d744b193ea325d62724596b (patch)
tree0cb75aac6d4452d95dfe8ab1931bed45b1246bb9
parent8e185d83398b2708f50207bc12d0e0a70bd70767 (diff)
downloadlinux-e4b57e0842621f597d744b193ea325d62724596b.tar.gz
linux-e4b57e0842621f597d744b193ea325d62724596b.tar.bz2
linux-e4b57e0842621f597d744b193ea325d62724596b.zip
[PATCH] 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 <michal@feix.cz> Acked-by: Paul Clements <paul.clements@steeleye.com> Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
-rw-r--r--drivers/block/nbd.c16
1 files changed, 9 insertions, 7 deletions
diff --git a/drivers/block/nbd.c b/drivers/block/nbd.c
index 0a1b1ea36ddc..31a0b605f261 100644
--- a/drivers/block/nbd.c
+++ b/drivers/block/nbd.c
@@ -300,6 +300,15 @@ static struct request *nbd_read_stat(struct nbd_device *lo)
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(struct nbd_device *lo)
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));