diff options
author | sjur.brandeland@stericsson.com <sjur.brandeland@stericsson.com> | 2011-10-13 11:29:22 +0000 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2011-10-19 03:25:40 -0400 |
commit | 94230febe47f82331f9493c4fd61085e2a6bf756 (patch) | |
tree | 37ab797d0347f7421cedb0fd8dd75af60de6bdf4 /drivers/net/caif | |
parent | 9e903e085262ffbf1fc44a17ac06058aca03524a (diff) |
caif-hsi: HSI Fix uninitialized data in HSI header
CAIF HSI header may be uninitialized and cause last message to
be repeated if transmit size is ~86 bytes long.
Signed-off-by: Sjur Brændeland <sjur.brandeland@stericsson.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'drivers/net/caif')
-rw-r--r-- | drivers/net/caif/caif_hsi.c | 12 |
1 files changed, 6 insertions, 6 deletions
diff --git a/drivers/net/caif/caif_hsi.c b/drivers/net/caif/caif_hsi.c index 2fcabba56087..193781389f73 100644 --- a/drivers/net/caif/caif_hsi.c +++ b/drivers/net/caif/caif_hsi.c @@ -178,6 +178,9 @@ static int cfhsi_tx_frm(struct cfhsi_desc *desc, struct cfhsi *cfhsi) if (!skb) return 0; + /* Clear offset. */ + desc->offset = 0; + /* Check if we can embed a CAIF frame. */ if (skb->len < CFHSI_MAX_EMB_FRM_SZ) { struct caif_payload_info *info; @@ -206,9 +209,7 @@ static int cfhsi_tx_frm(struct cfhsi_desc *desc, struct cfhsi *cfhsi) consume_skb(skb); skb = NULL; } - } else - /* Clear offset. */ - desc->offset = 0; + } /* Create payload CAIF frames. */ pfrm = desc->emb_frm + CFHSI_MAX_EMB_FRM_SZ; @@ -990,6 +991,8 @@ int cfhsi_probe(struct platform_device *pdev) /* Set up the driver. */ cfhsi->drv.tx_done_cb = cfhsi_tx_done_cb; cfhsi->drv.rx_done_cb = cfhsi_rx_done_cb; + cfhsi->drv.wake_up_cb = cfhsi_wake_up_cb; + cfhsi->drv.wake_down_cb = cfhsi_wake_down_cb; /* Initialize the work queues. */ INIT_WORK(&cfhsi->wake_up_work, cfhsi_wake_up); @@ -1045,9 +1048,6 @@ int cfhsi_probe(struct platform_device *pdev) goto err_net_reg; } - cfhsi->drv.wake_up_cb = cfhsi_wake_up_cb; - cfhsi->drv.wake_down_cb = cfhsi_wake_down_cb; - /* Register network device. */ res = register_netdev(ndev); if (res) { |