2022-01-05 08:27:09

by Jiasheng Jiang

[permalink] [raw]
Subject: [PATCH] thunderbolt: Check for null pointer after calling kmemdup in icm_handle_event

As the possible failure of the allocation, kmemdup() may return NULL
pointer.
Like alloc_switch(), it might be better to check it.
Therefore, icm_handle_event() should also check the return value of
kmemdup().
If fails, just free 'n' and directly return is enough, same as the way
to handle the failure of kmalloc().

Fixes: f67cf491175a ("thunderbolt: Add support for Internal Connection Manager (ICM)")
Signed-off-by: Jiasheng Jiang <[email protected]>
---
drivers/thunderbolt/icm.c | 5 +++++
1 file changed, 5 insertions(+)

diff --git a/drivers/thunderbolt/icm.c b/drivers/thunderbolt/icm.c
index 2f30b816705a..514a77a02985 100644
--- a/drivers/thunderbolt/icm.c
+++ b/drivers/thunderbolt/icm.c
@@ -1739,6 +1739,11 @@ static void icm_handle_event(struct tb *tb, enum tb_cfg_pkg_type type,

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

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



2022-01-05 10:19:04

by Mika Westerberg

[permalink] [raw]
Subject: Re: [PATCH] thunderbolt: Check for null pointer after calling kmemdup in icm_handle_event

Hi,

On Wed, Jan 05, 2022 at 04:26:34PM +0800, Jiasheng Jiang wrote:
> As the possible failure of the allocation, kmemdup() may return NULL
> pointer.
> Like alloc_switch(), it might be better to check it.
> Therefore, icm_handle_event() should also check the return value of
> kmemdup().
> If fails, just free 'n' and directly return is enough, same as the way
> to handle the failure of kmalloc().
>
> Fixes: f67cf491175a ("thunderbolt: Add support for Internal Connection Manager (ICM)")
> Signed-off-by: Jiasheng Jiang <[email protected]>

Thanks for the patch but I realized that this has been fixed already:

https://git.kernel.org/pub/scm/linux/kernel/git/westeri/thunderbolt.git/commit/?h=next&id=3cc1c6de458e0e58c413c3c35802ca96e55bbdbe

2022-01-05 10:22:04

by Greg Kroah-Hartman

[permalink] [raw]
Subject: Re: [PATCH] thunderbolt: Check for null pointer after calling kmemdup in icm_handle_event

On Wed, Jan 05, 2022 at 04:26:34PM +0800, Jiasheng Jiang wrote:
> As the possible failure of the allocation, kmemdup() may return NULL
> pointer.
> Like alloc_switch(), it might be better to check it.
> Therefore, icm_handle_event() should also check the return value of
> kmemdup().
> If fails, just free 'n' and directly return is enough, same as the way
> to handle the failure of kmalloc().

I can not understand this changelog text at all, sorry. Please read the
documentation for how to write a good changelog text.

And most importantly, how did you test this change?

thanks,

greg k-h

2022-01-06 00:55:38

by Jiasheng Jiang

[permalink] [raw]
Subject: Re: Re: [PATCH] thunderbolt: Check for null pointer after calling kmemdup in icm_handle_event

On Wed, Jan 05, 2022 at 06:21:57PM +0800, Greg KH wrote:
> I can not understand this changelog text at all, sorry. Please read the
> documentation for how to write a good changelog text.

Thanks, I will correct my changelog from now on.

> And most importantly, how did you test this change?

Actually, all I did is just to read the description of the kmemdup()
and then add the check.
I don't think it is necessary to test, for the patch is just to make
the system more robust, but not to introduce a new function, which is
needed to test to guarantee the normal operation.
Anyway, there is a previous patch that has already fixed the bug.

Sincerely thanks,
Jiang