Commit 94230feb authored by sjur.brandeland@stericsson.com's avatar sjur.brandeland@stericsson.com Committed by David S. Miller

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: default avatarSjur Brændeland <sjur.brandeland@stericsson.com>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent 9e903e08
...@@ -178,6 +178,9 @@ static int cfhsi_tx_frm(struct cfhsi_desc *desc, struct cfhsi *cfhsi) ...@@ -178,6 +178,9 @@ static int cfhsi_tx_frm(struct cfhsi_desc *desc, struct cfhsi *cfhsi)
if (!skb) if (!skb)
return 0; return 0;
/* Clear offset. */
desc->offset = 0;
/* Check if we can embed a CAIF frame. */ /* Check if we can embed a CAIF frame. */
if (skb->len < CFHSI_MAX_EMB_FRM_SZ) { if (skb->len < CFHSI_MAX_EMB_FRM_SZ) {
struct caif_payload_info *info; struct caif_payload_info *info;
...@@ -206,9 +209,7 @@ static int cfhsi_tx_frm(struct cfhsi_desc *desc, struct cfhsi *cfhsi) ...@@ -206,9 +209,7 @@ static int cfhsi_tx_frm(struct cfhsi_desc *desc, struct cfhsi *cfhsi)
consume_skb(skb); consume_skb(skb);
skb = NULL; skb = NULL;
} }
} else }
/* Clear offset. */
desc->offset = 0;
/* Create payload CAIF frames. */ /* Create payload CAIF frames. */
pfrm = desc->emb_frm + CFHSI_MAX_EMB_FRM_SZ; pfrm = desc->emb_frm + CFHSI_MAX_EMB_FRM_SZ;
...@@ -990,6 +991,8 @@ int cfhsi_probe(struct platform_device *pdev) ...@@ -990,6 +991,8 @@ int cfhsi_probe(struct platform_device *pdev)
/* Set up the driver. */ /* Set up the driver. */
cfhsi->drv.tx_done_cb = cfhsi_tx_done_cb; cfhsi->drv.tx_done_cb = cfhsi_tx_done_cb;
cfhsi->drv.rx_done_cb = cfhsi_rx_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. */ /* Initialize the work queues. */
INIT_WORK(&cfhsi->wake_up_work, cfhsi_wake_up); INIT_WORK(&cfhsi->wake_up_work, cfhsi_wake_up);
...@@ -1045,9 +1048,6 @@ int cfhsi_probe(struct platform_device *pdev) ...@@ -1045,9 +1048,6 @@ int cfhsi_probe(struct platform_device *pdev)
goto err_net_reg; 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. */ /* Register network device. */
res = register_netdev(ndev); res = register_netdev(ndev);
if (res) { if (res) {
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment