diff mbox series

[v2] fs: lockd: avoid possible wrong NULL parameter

Message ID 20230804012656.4091877-1-suhui@nfschina.com (mailing list archive)
State New, archived
Headers show
Series [v2] fs: lockd: avoid possible wrong NULL parameter | expand

Commit Message

Su Hui Aug. 4, 2023, 1:26 a.m. UTC
clang's static analysis warning: fs/lockd/mon.c: line 293, column 2:
Null pointer passed as 2nd argument to memory copy function.

Assuming 'hostname' is NULL and calling 'nsm_create_handle()', this will
pass NULL as 2nd argument to memory copy function 'memcpy()'. So return
NULL if 'hostname' is invalid.

Fixes: 77a3ef33e2de ("NSM: More clean up of nsm_get_handle()")
Signed-off-by: Su Hui <suhui@nfschina.com>
---
v2:
 - move NULL check to the callee "nsm_create_handle()"
 fs/lockd/mon.c | 3 +++
 1 file changed, 3 insertions(+)

Comments

Jeff Layton Aug. 4, 2023, 10:14 a.m. UTC | #1
On Fri, 2023-08-04 at 09:26 +0800, Su Hui wrote:
> clang's static analysis warning: fs/lockd/mon.c: line 293, column 2:
> Null pointer passed as 2nd argument to memory copy function.
> 
> Assuming 'hostname' is NULL and calling 'nsm_create_handle()', this will
> pass NULL as 2nd argument to memory copy function 'memcpy()'. So return
> NULL if 'hostname' is invalid.
> 
> Fixes: 77a3ef33e2de ("NSM: More clean up of nsm_get_handle()")
> Signed-off-by: Su Hui <suhui@nfschina.com>
> ---
> v2:
>  - move NULL check to the callee "nsm_create_handle()"
>  fs/lockd/mon.c | 3 +++
>  1 file changed, 3 insertions(+)
> 
> diff --git a/fs/lockd/mon.c b/fs/lockd/mon.c
> index 1d9488cf0534..87a0f207df0b 100644
> --- a/fs/lockd/mon.c
> +++ b/fs/lockd/mon.c
> @@ -276,6 +276,9 @@ static struct nsm_handle *nsm_create_handle(const struct sockaddr *sap,
>  {
>  	struct nsm_handle *new;
>  
> +	if (!hostname)
> +		return NULL;
> +
>  	new = kzalloc(sizeof(*new) + hostname_len + 1, GFP_KERNEL);
>  	if (unlikely(new == NULL))
>  		return NULL;

Reviewed-by: Jeff Layton <jlayton@kernel.org>
Nick Desaulniers Aug. 4, 2023, 3:49 p.m. UTC | #2
On Thu, Aug 3, 2023 at 6:28 PM Su Hui <suhui@nfschina.com> wrote:
>
> clang's static analysis warning: fs/lockd/mon.c: line 293, column 2:
> Null pointer passed as 2nd argument to memory copy function.
>
> Assuming 'hostname' is NULL and calling 'nsm_create_handle()', this will
> pass NULL as 2nd argument to memory copy function 'memcpy()'. So return
> NULL if 'hostname' is invalid.
>
> Fixes: 77a3ef33e2de ("NSM: More clean up of nsm_get_handle()")
> Signed-off-by: Su Hui <suhui@nfschina.com>

Thanks for the patch! And thanks for checking clang static analysis reports!
Reviewed-by: Nick Desaulniers <ndesaulniers@google.com>

> ---
> v2:
>  - move NULL check to the callee "nsm_create_handle()"
>  fs/lockd/mon.c | 3 +++
>  1 file changed, 3 insertions(+)
>
> diff --git a/fs/lockd/mon.c b/fs/lockd/mon.c
> index 1d9488cf0534..87a0f207df0b 100644
> --- a/fs/lockd/mon.c
> +++ b/fs/lockd/mon.c
> @@ -276,6 +276,9 @@ static struct nsm_handle *nsm_create_handle(const struct sockaddr *sap,
>  {
>         struct nsm_handle *new;
>
> +       if (!hostname)
> +               return NULL;
> +
>         new = kzalloc(sizeof(*new) + hostname_len + 1, GFP_KERNEL);
>         if (unlikely(new == NULL))
>                 return NULL;
> --
> 2.30.2
>
Chuck Lever Aug. 4, 2023, 6:37 p.m. UTC | #3
On Fri, Aug 04, 2023 at 09:26:57AM +0800, Su Hui wrote:
> clang's static analysis warning: fs/lockd/mon.c: line 293, column 2:
> Null pointer passed as 2nd argument to memory copy function.
> 
> Assuming 'hostname' is NULL and calling 'nsm_create_handle()', this will
> pass NULL as 2nd argument to memory copy function 'memcpy()'. So return
> NULL if 'hostname' is invalid.
> 
> Fixes: 77a3ef33e2de ("NSM: More clean up of nsm_get_handle()")
> Signed-off-by: Su Hui <suhui@nfschina.com>

Applied to nfsd-next (for v6.6).


> ---
> v2:
>  - move NULL check to the callee "nsm_create_handle()"
>  fs/lockd/mon.c | 3 +++
>  1 file changed, 3 insertions(+)
> 
> diff --git a/fs/lockd/mon.c b/fs/lockd/mon.c
> index 1d9488cf0534..87a0f207df0b 100644
> --- a/fs/lockd/mon.c
> +++ b/fs/lockd/mon.c
> @@ -276,6 +276,9 @@ static struct nsm_handle *nsm_create_handle(const struct sockaddr *sap,
>  {
>  	struct nsm_handle *new;
>  
> +	if (!hostname)
> +		return NULL;
> +
>  	new = kzalloc(sizeof(*new) + hostname_len + 1, GFP_KERNEL);
>  	if (unlikely(new == NULL))
>  		return NULL;
> -- 
> 2.30.2
>
diff mbox series

Patch

diff --git a/fs/lockd/mon.c b/fs/lockd/mon.c
index 1d9488cf0534..87a0f207df0b 100644
--- a/fs/lockd/mon.c
+++ b/fs/lockd/mon.c
@@ -276,6 +276,9 @@  static struct nsm_handle *nsm_create_handle(const struct sockaddr *sap,
 {
 	struct nsm_handle *new;
 
+	if (!hostname)
+		return NULL;
+
 	new = kzalloc(sizeof(*new) + hostname_len + 1, GFP_KERNEL);
 	if (unlikely(new == NULL))
 		return NULL;