Commit 3cc1c6de authored by Xiaoke Wang's avatar Xiaoke Wang Committed by Mika Westerberg
Browse files

thunderbolt: Check return value of kmemdup() in icm_handle_event()



kmemdup() may return NULL if there is not enough memory available. Check
this and bail out early in this case. While there move INIT_WORK() to
happen after we have allocated all the memory needed for the event
handling to avoid doing unnecessary work.

Signed-off-by: default avatarXiaoke Wang <xkernel.wang@foxmail.com>
Signed-off-by: default avatarMika Westerberg <mika.westerberg@linux.intel.com>
parent fea783e6
Loading
Loading
Loading
Loading
+6 −1
Original line number Diff line number Diff line
@@ -1741,8 +1741,13 @@ static void icm_handle_event(struct tb *tb, enum tb_cfg_pkg_type type,
	if (!n)
		return;

	INIT_WORK(&n->work, icm_handle_notification);
	n->pkg = kmemdup(buf, size, GFP_KERNEL);
	if (!n->pkg) {
		kfree(n);
		return;
	}

	INIT_WORK(&n->work, icm_handle_notification);
	n->tb = tb;

	queue_work(tb->wq, &n->work);