mt7601u: check return value of alloc_skb
[ Upstream commit 5fb01e91daf84ad1e50edfcf63116ecbe31e7ba7 ] 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> Signed-off-by: Sasha Levin <alexander.levin@microsoft.com> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
parent
50f7d70a3f
commit
2b1ef3df1c
1 changed files with 8 additions and 2 deletions
|
@ -66,8 +66,10 @@ mt7601u_mcu_msg_alloc(struct mt7601u_dev *dev, const void *data, int len)
|
||||||
WARN_ON(len % 4); /* if length is not divisible by 4 we need to pad */
|
WARN_ON(len % 4); /* if length is not divisible by 4 we need to pad */
|
||||||
|
|
||||||
skb = alloc_skb(len + MT_DMA_HDR_LEN + 4, GFP_KERNEL);
|
skb = alloc_skb(len + MT_DMA_HDR_LEN + 4, GFP_KERNEL);
|
||||||
skb_reserve(skb, MT_DMA_HDR_LEN);
|
if (skb) {
|
||||||
memcpy(skb_put(skb, len), data, len);
|
skb_reserve(skb, MT_DMA_HDR_LEN);
|
||||||
|
memcpy(skb_put(skb, len), data, len);
|
||||||
|
}
|
||||||
|
|
||||||
return skb;
|
return skb;
|
||||||
}
|
}
|
||||||
|
@ -170,6 +172,8 @@ static int mt7601u_mcu_function_select(struct mt7601u_dev *dev,
|
||||||
};
|
};
|
||||||
|
|
||||||
skb = mt7601u_mcu_msg_alloc(dev, &msg, sizeof(msg));
|
skb = mt7601u_mcu_msg_alloc(dev, &msg, sizeof(msg));
|
||||||
|
if (!skb)
|
||||||
|
return -ENOMEM;
|
||||||
return mt7601u_mcu_msg_send(dev, skb, CMD_FUN_SET_OP, func == 5);
|
return mt7601u_mcu_msg_send(dev, skb, CMD_FUN_SET_OP, func == 5);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -205,6 +209,8 @@ mt7601u_mcu_calibrate(struct mt7601u_dev *dev, enum mcu_calibrate cal, u32 val)
|
||||||
};
|
};
|
||||||
|
|
||||||
skb = mt7601u_mcu_msg_alloc(dev, &msg, sizeof(msg));
|
skb = mt7601u_mcu_msg_alloc(dev, &msg, sizeof(msg));
|
||||||
|
if (!skb)
|
||||||
|
return -ENOMEM;
|
||||||
return mt7601u_mcu_msg_send(dev, skb, CMD_CALIBRATION_OP, true);
|
return mt7601u_mcu_msg_send(dev, skb, CMD_CALIBRATION_OP, true);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Add table
Reference in a new issue