[ATM]: Fix warning.
The compiler warning drivers/atm/firestream.c: In function ‘top_off_fp’: drivers/atm/firestream.c:1505: warning: cast to pointer from integer of different size does indicate a bug, albeit a minor one. Fixed, by using a 32-bit temporary prior to the call to bus_to_virt(). The larger bug is still present: the entire driver assumes that machine pointers are 32-bit, as it stores pointers in 32-bit hardware registers. This is obvious to anyone who knows the driver well, but for the casual readers it is helpfully noted with FIXME. Signed-off-by: Jeff Garzik <jeff@garzik.org> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
3f196eb519
commit
b206a65d67
1 changed files with 11 additions and 4 deletions
|
@ -1475,6 +1475,7 @@ static void top_off_fp (struct fs_dev *dev, struct freepool *fp,
|
|||
struct FS_BPENTRY *qe, *ne;
|
||||
struct sk_buff *skb;
|
||||
int n = 0;
|
||||
u32 qe_tmp;
|
||||
|
||||
fs_dprintk (FS_DEBUG_QUEUE, "Topping off queue at %x (%d-%d/%d)\n",
|
||||
fp->offset, read_fs (dev, FP_CNT (fp->offset)), fp->n,
|
||||
|
@ -1502,10 +1503,16 @@ static void top_off_fp (struct fs_dev *dev, struct freepool *fp,
|
|||
ne->skb = skb;
|
||||
ne->fp = fp;
|
||||
|
||||
qe = (struct FS_BPENTRY *) (read_fs (dev, FP_EA(fp->offset)));
|
||||
fs_dprintk (FS_DEBUG_QUEUE, "link at %p\n", qe);
|
||||
if (qe) {
|
||||
qe = bus_to_virt ((long) qe);
|
||||
/*
|
||||
* FIXME: following code encodes and decodes
|
||||
* machine pointers (could be 64-bit) into a
|
||||
* 32-bit register.
|
||||
*/
|
||||
|
||||
qe_tmp = read_fs (dev, FP_EA(fp->offset));
|
||||
fs_dprintk (FS_DEBUG_QUEUE, "link at %x\n", qe_tmp);
|
||||
if (qe_tmp) {
|
||||
qe = bus_to_virt ((long) qe_tmp);
|
||||
qe->next = virt_to_bus(ne);
|
||||
qe->flags &= ~FP_FLAGS_EPI;
|
||||
} else
|
||||
|
|
Loading…
Reference in a new issue