[AOE]: Add get_unaligned() calls where needed.
Based upon a report by Andrew Walrond. Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
7ab876703d
commit
43ecf5295b
|
@ -530,7 +530,7 @@ aoecmd_ata_rsp(struct sk_buff *skb)
|
||||||
u16 aoemajor;
|
u16 aoemajor;
|
||||||
|
|
||||||
hin = (struct aoe_hdr *) skb->mac.raw;
|
hin = (struct aoe_hdr *) skb->mac.raw;
|
||||||
aoemajor = be16_to_cpu(hin->major);
|
aoemajor = be16_to_cpu(get_unaligned(&hin->major));
|
||||||
d = aoedev_by_aoeaddr(aoemajor, hin->minor);
|
d = aoedev_by_aoeaddr(aoemajor, hin->minor);
|
||||||
if (d == NULL) {
|
if (d == NULL) {
|
||||||
snprintf(ebuf, sizeof ebuf, "aoecmd_ata_rsp: ata response "
|
snprintf(ebuf, sizeof ebuf, "aoecmd_ata_rsp: ata response "
|
||||||
|
@ -542,7 +542,7 @@ aoecmd_ata_rsp(struct sk_buff *skb)
|
||||||
|
|
||||||
spin_lock_irqsave(&d->lock, flags);
|
spin_lock_irqsave(&d->lock, flags);
|
||||||
|
|
||||||
n = be32_to_cpu(hin->tag);
|
n = be32_to_cpu(get_unaligned(&hin->tag));
|
||||||
f = getframe(d, n);
|
f = getframe(d, n);
|
||||||
if (f == NULL) {
|
if (f == NULL) {
|
||||||
calc_rttavg(d, -tsince(n));
|
calc_rttavg(d, -tsince(n));
|
||||||
|
@ -550,9 +550,9 @@ aoecmd_ata_rsp(struct sk_buff *skb)
|
||||||
snprintf(ebuf, sizeof ebuf,
|
snprintf(ebuf, sizeof ebuf,
|
||||||
"%15s e%d.%d tag=%08x@%08lx\n",
|
"%15s e%d.%d tag=%08x@%08lx\n",
|
||||||
"unexpected rsp",
|
"unexpected rsp",
|
||||||
be16_to_cpu(hin->major),
|
be16_to_cpu(get_unaligned(&hin->major)),
|
||||||
hin->minor,
|
hin->minor,
|
||||||
be32_to_cpu(hin->tag),
|
be32_to_cpu(get_unaligned(&hin->tag)),
|
||||||
jiffies);
|
jiffies);
|
||||||
aoechr_error(ebuf);
|
aoechr_error(ebuf);
|
||||||
return;
|
return;
|
||||||
|
@ -631,7 +631,7 @@ aoecmd_ata_rsp(struct sk_buff *skb)
|
||||||
printk(KERN_INFO
|
printk(KERN_INFO
|
||||||
"aoe: unrecognized ata command %2.2Xh for %d.%d\n",
|
"aoe: unrecognized ata command %2.2Xh for %d.%d\n",
|
||||||
ahout->cmdstat,
|
ahout->cmdstat,
|
||||||
be16_to_cpu(hin->major),
|
be16_to_cpu(get_unaligned(&hin->major)),
|
||||||
hin->minor);
|
hin->minor);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -733,7 +733,7 @@ aoecmd_cfg_rsp(struct sk_buff *skb)
|
||||||
* Enough people have their dip switches set backwards to
|
* Enough people have their dip switches set backwards to
|
||||||
* warrant a loud message for this special case.
|
* warrant a loud message for this special case.
|
||||||
*/
|
*/
|
||||||
aoemajor = be16_to_cpu(h->major);
|
aoemajor = be16_to_cpu(get_unaligned(&h->major));
|
||||||
if (aoemajor == 0xfff) {
|
if (aoemajor == 0xfff) {
|
||||||
printk(KERN_ERR "aoe: Warning: shelf address is all ones. "
|
printk(KERN_ERR "aoe: Warning: shelf address is all ones. "
|
||||||
"Check shelf dip switches.\n");
|
"Check shelf dip switches.\n");
|
||||||
|
|
|
@ -8,6 +8,7 @@
|
||||||
#include <linux/blkdev.h>
|
#include <linux/blkdev.h>
|
||||||
#include <linux/netdevice.h>
|
#include <linux/netdevice.h>
|
||||||
#include <linux/moduleparam.h>
|
#include <linux/moduleparam.h>
|
||||||
|
#include <asm/unaligned.h>
|
||||||
#include "aoe.h"
|
#include "aoe.h"
|
||||||
|
|
||||||
#define NECODES 5
|
#define NECODES 5
|
||||||
|
@ -123,7 +124,7 @@ aoenet_rcv(struct sk_buff *skb, struct net_device *ifp, struct packet_type *pt,
|
||||||
skb_push(skb, ETH_HLEN); /* (1) */
|
skb_push(skb, ETH_HLEN); /* (1) */
|
||||||
|
|
||||||
h = (struct aoe_hdr *) skb->mac.raw;
|
h = (struct aoe_hdr *) skb->mac.raw;
|
||||||
n = be32_to_cpu(h->tag);
|
n = be32_to_cpu(get_unaligned(&h->tag));
|
||||||
if ((h->verfl & AOEFL_RSP) == 0 || (n & 1<<31))
|
if ((h->verfl & AOEFL_RSP) == 0 || (n & 1<<31))
|
||||||
goto exit;
|
goto exit;
|
||||||
|
|
||||||
|
@ -133,7 +134,7 @@ aoenet_rcv(struct sk_buff *skb, struct net_device *ifp, struct packet_type *pt,
|
||||||
n = 0;
|
n = 0;
|
||||||
if (net_ratelimit())
|
if (net_ratelimit())
|
||||||
printk(KERN_ERR "aoe: error packet from %d.%d; ecode=%d '%s'\n",
|
printk(KERN_ERR "aoe: error packet from %d.%d; ecode=%d '%s'\n",
|
||||||
be16_to_cpu(h->major), h->minor,
|
be16_to_cpu(get_unaligned(&h->major)), h->minor,
|
||||||
h->err, aoe_errlist[n]);
|
h->err, aoe_errlist[n]);
|
||||||
goto exit;
|
goto exit;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue