Loading drivers/isdn/capi/capidrv.c +23 −2 Original line number Diff line number Diff line Loading @@ -1843,6 +1843,7 @@ static int if_sendbuf(int id, int channel, int doack, struct sk_buff *skb) int msglen; u16 errcode; u16 datahandle; u32 data; if (!card) { printk(KERN_ERR "capidrv: if_sendbuf called with invalid driverId %d!\n", Loading @@ -1860,9 +1861,26 @@ static int if_sendbuf(int id, int channel, int doack, struct sk_buff *skb) return 0; } datahandle = nccip->datahandle; /* * Here we copy pointer skb->data into the 32-bit 'Data' field. * The 'Data' field is not used in practice in linux kernel * (neither in 32 or 64 bit), but should have some value, * since a CAPI message trace will display it. * * The correct value in the 32 bit case is the address of the * data, in 64 bit it makes no sense, we use 0 there. */ #ifdef CONFIG_64BIT data = 0; #else data = (unsigned long) skb->data; #endif capi_fill_DATA_B3_REQ(&sendcmsg, global.ap.applid, card->msgid++, nccip->ncci, /* adr */ (u32) skb->data, /* Data */ data, /* Data */ skb->len, /* DataLength */ datahandle, /* DataHandle */ 0 /* Flags */ Loading Loading @@ -2123,7 +2141,10 @@ static int capidrv_delcontr(u16 contr) printk(KERN_ERR "capidrv: delcontr: no contr %u\n", contr); return -1; } #warning FIXME: maybe a race condition the card should be removed here from global list /kkeil /* FIXME: maybe a race condition the card should be removed * here from global list /kkeil */ spin_unlock_irqrestore(&global_lock, flags); del_timer(&card->listentimer); Loading Loading
drivers/isdn/capi/capidrv.c +23 −2 Original line number Diff line number Diff line Loading @@ -1843,6 +1843,7 @@ static int if_sendbuf(int id, int channel, int doack, struct sk_buff *skb) int msglen; u16 errcode; u16 datahandle; u32 data; if (!card) { printk(KERN_ERR "capidrv: if_sendbuf called with invalid driverId %d!\n", Loading @@ -1860,9 +1861,26 @@ static int if_sendbuf(int id, int channel, int doack, struct sk_buff *skb) return 0; } datahandle = nccip->datahandle; /* * Here we copy pointer skb->data into the 32-bit 'Data' field. * The 'Data' field is not used in practice in linux kernel * (neither in 32 or 64 bit), but should have some value, * since a CAPI message trace will display it. * * The correct value in the 32 bit case is the address of the * data, in 64 bit it makes no sense, we use 0 there. */ #ifdef CONFIG_64BIT data = 0; #else data = (unsigned long) skb->data; #endif capi_fill_DATA_B3_REQ(&sendcmsg, global.ap.applid, card->msgid++, nccip->ncci, /* adr */ (u32) skb->data, /* Data */ data, /* Data */ skb->len, /* DataLength */ datahandle, /* DataHandle */ 0 /* Flags */ Loading Loading @@ -2123,7 +2141,10 @@ static int capidrv_delcontr(u16 contr) printk(KERN_ERR "capidrv: delcontr: no contr %u\n", contr); return -1; } #warning FIXME: maybe a race condition the card should be removed here from global list /kkeil /* FIXME: maybe a race condition the card should be removed * here from global list /kkeil */ spin_unlock_irqrestore(&global_lock, flags); del_timer(&card->listentimer); Loading