On Mon, 27 Aug 2007 13:02:26 +0200
Karsten Keil <[EMAIL PROTECTED]> wrote:

> On Fri, Aug 24, 2007 at 11:08:11AM -0700, Stephen Hemminger wrote:
> > The following driver API is broken on any architecture with 64 bit 
> > addresses.
> > because of cast that loses high bits.
> > 
> > Signed-off-by: Stephen Hemminger <[EMAIL PROTECTED]>
> > 
> > 
> > --- a/drivers/isdn/capi/capidrv.c   2007-06-25 09:03:12.000000000 -0700
> > +++ b/drivers/isdn/capi/capidrv.c   2007-08-24 11:06:46.000000000 -0700
> > @@ -1855,6 +1855,9 @@ static int if_sendbuf(int id, int channe
> >             return 0;
> >     }
> >     datahandle = nccip->datahandle;
> > +
> > +   /* This won't work on 64 bit! */
> > +   BUILD_BUG_ON(sizeof(skb->data) > sizeof(u32));
> >     capi_fill_DATA_B3_REQ(&sendcmsg, global.ap.applid, card->msgid++,
> >                           nccip->ncci,      /* adr */
> >                           (u32) skb->data,  /* Data */
> 
> 
> NACK.
> 
> It is not a BUG.
> 
> This is OK, since this field must have a value and on 32 it has the correct
> one) On 64 bit this field is ignored (but also need a value, random data is
> bad as well).

If you are using it as a transaction ID, then you should generate one.
There is no guarantee that two skb's won't have the same 32 bit data value
on 64 bit.
-- 
Stephen Hemminger <[EMAIL PROTECTED]>
-
To unsubscribe from this list: send the line "unsubscribe netdev" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to