diff options
Diffstat (limited to 'drivers/isdn/hisax/elsa_ser.c')
-rw-r--r-- | drivers/isdn/hisax/elsa_ser.c | 6 |
1 files changed, 4 insertions, 2 deletions
diff --git a/drivers/isdn/hisax/elsa_ser.c b/drivers/isdn/hisax/elsa_ser.c index ae377e812775..1642dca988a1 100644 --- a/drivers/isdn/hisax/elsa_ser.c +++ b/drivers/isdn/hisax/elsa_ser.c | |||
@@ -254,14 +254,16 @@ write_modem(struct BCState *bcs) { | |||
254 | count = len; | 254 | count = len; |
255 | if (count > MAX_MODEM_BUF - fp) { | 255 | if (count > MAX_MODEM_BUF - fp) { |
256 | count = MAX_MODEM_BUF - fp; | 256 | count = MAX_MODEM_BUF - fp; |
257 | memcpy(cs->hw.elsa.transbuf + fp, bcs->tx_skb->data, count); | 257 | skb_copy_from_linear_data(bcs->tx_skb, |
258 | cs->hw.elsa.transbuf + fp, count); | ||
258 | skb_pull(bcs->tx_skb, count); | 259 | skb_pull(bcs->tx_skb, count); |
259 | cs->hw.elsa.transcnt += count; | 260 | cs->hw.elsa.transcnt += count; |
260 | ret = count; | 261 | ret = count; |
261 | count = len - count; | 262 | count = len - count; |
262 | fp = 0; | 263 | fp = 0; |
263 | } | 264 | } |
264 | memcpy((cs->hw.elsa.transbuf + fp), bcs->tx_skb->data, count); | 265 | skb_copy_from_linear_data(bcs->tx_skb, |
266 | cs->hw.elsa.transbuf + fp, count); | ||
265 | skb_pull(bcs->tx_skb, count); | 267 | skb_pull(bcs->tx_skb, count); |
266 | cs->hw.elsa.transcnt += count; | 268 | cs->hw.elsa.transcnt += count; |
267 | ret += count; | 269 | ret += count; |