mISDN: endian annotations for struct zt
PATCH 1/2 mISDN: endian annotations for struct zt
Found two possible bugs where the z1 value was used directly without byteswapping.
Signed-off-by Harvey Harrison <[email protected]>
--- drivers/isdn/hardware/mISDN/hfc_pci.h | 4 ++-- drivers/isdn/hardware/mISDN/hfcpci.c | 9 ++++----- 2 files changed, 6 insertions(+), 7 deletions(-)
drivers/isdn/hardware/mISDN/hfc_pci.h +2 -2
@@ -183,8 +183,8 @@#define D_FREG_MASK 0xFstruct zt { -unsigned short z1;/* Z1 pointer 16 Bit */ -unsigned short z2;/* Z2 pointer 16 Bit */ +__le16 z1;/* Z1 pointer 16 Bit */ +__le16 z2;/* Z2 pointer 16 Bit */ };struct dfifo {
drivers/isdn/hardware/mISDN/hfcpci.c +4 -5
@@ -366,8 +366,7 @@ static void hfcpci_clear_fifo_tx(struct hfc_pci *hc, int fifo) bzt->f2 =MAX_B_FRAMES ; bzt->f1 = bzt->f2;/* init F pointers to remain constant */ bzt->za[MAX_B_FRAMES ].z1 =cpu_to_le16 (B_FIFO_SIZE +B_SUB_VAL -1 ); - bzt->za[MAX_B_FRAMES ].z2 =cpu_to_le16 ( -le16_to_cpu (bzt->za[MAX_B_FRAMES ].z1 -1 )); + bzt->za[MAX_B_FRAMES ].z2 =cpu_to_le16 (B_FIFO_SIZE +B_SUB_VAL -2 );if (fifo_state) hc->hw.fifo_en |= fifo_state;Write_hfc (hc,HFCPCI_FIFO_EN , hc->hw.fifo_en);
@@ -482,7 +481,7 @@ receive_dmsg(struct hfc_pci *hc) df->f2 = ((df->f2 +1 ) &MAX_D_FRAMES ) | (MAX_D_FRAMES +1 );/* next buffer */ df->za[df->f2 &D_FREG_MASK ].z2 = -cpu_to_le16 ((zp->z2 + rcnt) & (D_FIFO_SIZE -1 )); +cpu_to_le16 ((le16_to_cpu (zp->z2) + rcnt) & (D_FIFO_SIZE -1 )); }else { dch->rx_skb =mI_alloc_skb (rcnt -3 ,GFP_ATOMIC );if (!dch->rx_skb) {
@@ -526,7 +525,7 @@ receive_dmsg(struct hfc_pci *hc)int hfcpci_empty_fifo_trans (struct bchannel *bch,struct bzfifo *bz,u_char *bdata) { -unsigned short *z1r, *z2r; +__le16 *z1r, *z2r;int new_z2, fcnt, maxlen;u_char *ptr, *ptr1;
@@ -724,7 +723,7 @@ hfcpci_fill_fifo(struct bchannel *bch)struct bzfifo *bz;u_char *bdata;u_char new_f1, *src, *dst; -unsigned short *z1t, *z2t; +__le16 *z1t, *z2t;if ((bch->debug &DEBUG_HW_BCHANNEL ) && !(bch->debug &DEBUG_HW_BFIFO ))printk (KERN_DEBUG "%s\n" , __func__);
Signature · 1 line
1.6.0.rc1.278.g9c632