skb_pad() does not change skb->len, callers have to follow it with skb_put(), which is error prone. Use skb_put_padto() instead of the open-coded sequence in nokia_enqueue(). Signed-off-by: Eric Dumazet --- Part of a medium term plan to get rid of skb_pad(), source of many mistakes. drivers/bluetooth/hci_nokia.c | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) diff --git a/drivers/bluetooth/hci_nokia.c b/drivers/bluetooth/hci_nokia.c index be2923231e7128350156bd77ed3cd426c4b31b24..2866d4b54a537ba71a1c602d170debb3d2a697f4 100644 --- a/drivers/bluetooth/hci_nokia.c +++ b/drivers/bluetooth/hci_nokia.c @@ -531,12 +531,9 @@ static int nokia_enqueue(struct hci_uart *hu, struct sk_buff *skb) memcpy(skb_push(skb, 1), &bt_cb(skb)->pkt_type, 1); /* Packets must be word aligned */ - if (skb->len % 2) { - err = skb_pad(skb, 1); - if (err) - return err; - skb_put(skb, 1); - } + err = skb_put_padto(skb, round_up(skb->len, 2)); + if (err) + return err; skb_queue_tail(&btdev->txq, skb); -- 2.53.0