diff options
Diffstat (limited to 'drivers/block/aoe/aoenet.c')
-rw-r--r-- | drivers/block/aoe/aoenet.c | 6 |
1 files changed, 5 insertions, 1 deletions
diff --git a/drivers/block/aoe/aoenet.c b/drivers/block/aoe/aoenet.c index 07878076e43c..000eff2b53a8 100644 --- a/drivers/block/aoe/aoenet.c +++ b/drivers/block/aoe/aoenet.c | |||
@@ -142,7 +142,8 @@ aoenet_rcv(struct sk_buff *skb, struct net_device *ifp, struct packet_type *pt, | |||
142 | 142 | ||
143 | switch (h->cmd) { | 143 | switch (h->cmd) { |
144 | case AOECMD_ATA: | 144 | case AOECMD_ATA: |
145 | aoecmd_ata_rsp(skb); | 145 | /* ata_rsp may keep skb for later processing or give it back */ |
146 | skb = aoecmd_ata_rsp(skb); | ||
146 | break; | 147 | break; |
147 | case AOECMD_CFG: | 148 | case AOECMD_CFG: |
148 | aoecmd_cfg_rsp(skb); | 149 | aoecmd_cfg_rsp(skb); |
@@ -152,6 +153,9 @@ aoenet_rcv(struct sk_buff *skb, struct net_device *ifp, struct packet_type *pt, | |||
152 | break; /* don't complain about vendor commands */ | 153 | break; /* don't complain about vendor commands */ |
153 | printk(KERN_INFO "aoe: unknown cmd %d\n", h->cmd); | 154 | printk(KERN_INFO "aoe: unknown cmd %d\n", h->cmd); |
154 | } | 155 | } |
156 | |||
157 | if (!skb) | ||
158 | return 0; | ||
155 | exit: | 159 | exit: |
156 | dev_kfree_skb(skb); | 160 | dev_kfree_skb(skb); |
157 | return 0; | 161 | return 0; |