Skip to content

Commit 5fb01e9

Browse files
SinkFinderKalle Valo
authored andcommitted
mt7601u: check return value of alloc_skb
Function alloc_skb() will return a NULL pointer if there is no enough memory. However, in function mt7601u_mcu_msg_alloc(), its return value is not validated before it is used. This patch fixes it. Signed-off-by: Pan Bian <bianpan2016@163.com> Acked-by: Jakub Kicinski <kubakici@wp.pl> Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
1 parent 2f6ae79 commit 5fb01e9

File tree

1 file changed

+8
-2
lines changed
  • drivers/net/wireless/mediatek/mt7601u

1 file changed

+8
-2
lines changed

drivers/net/wireless/mediatek/mt7601u/mcu.c

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -66,8 +66,10 @@ mt7601u_mcu_msg_alloc(struct mt7601u_dev *dev, const void *data, int len)
6666
WARN_ON(len % 4); /* if length is not divisible by 4 we need to pad */
6767

6868
skb = alloc_skb(len + MT_DMA_HDR_LEN + 4, GFP_KERNEL);
69-
skb_reserve(skb, MT_DMA_HDR_LEN);
70-
memcpy(skb_put(skb, len), data, len);
69+
if (skb) {
70+
skb_reserve(skb, MT_DMA_HDR_LEN);
71+
memcpy(skb_put(skb, len), data, len);
72+
}
7173

7274
return skb;
7375
}
@@ -170,6 +172,8 @@ static int mt7601u_mcu_function_select(struct mt7601u_dev *dev,
170172
};
171173

172174
skb = mt7601u_mcu_msg_alloc(dev, &msg, sizeof(msg));
175+
if (!skb)
176+
return -ENOMEM;
173177
return mt7601u_mcu_msg_send(dev, skb, CMD_FUN_SET_OP, func == 5);
174178
}
175179

@@ -205,6 +209,8 @@ mt7601u_mcu_calibrate(struct mt7601u_dev *dev, enum mcu_calibrate cal, u32 val)
205209
};
206210

207211
skb = mt7601u_mcu_msg_alloc(dev, &msg, sizeof(msg));
212+
if (!skb)
213+
return -ENOMEM;
208214
return mt7601u_mcu_msg_send(dev, skb, CMD_CALIBRATION_OP, true);
209215
}
210216

0 commit comments

Comments
 (0)