2022-06-14 07:19:53

by Li Qiong

[permalink] [raw]
Subject: [PATCH] libceph: check pointer before assigned to "c->rules[]"

It should be better to check pointer firstly, then assign it
to c->rules[]. Refine code a little bit.

Signed-off-by: Li Qiong <[email protected]>
---
net/ceph/osdmap.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/net/ceph/osdmap.c b/net/ceph/osdmap.c
index 2823bb3cff55..6ec5007f96dc 100644
--- a/net/ceph/osdmap.c
+++ b/net/ceph/osdmap.c
@@ -571,9 +571,9 @@ static struct crush_map *crush_decode(void *pbyval, void *end)
goto bad;
#endif
r = kmalloc(struct_size(r, steps, yes), GFP_NOFS);
- c->rules[i] = r;
if (r == NULL)
goto badmem;
+ c->rules[i] = r;
dout(" rule %d is at %p\n", i, r);
r->len = yes;
ceph_decode_copy_safe(p, end, &r->mask, 4, bad); /* 4 u8's */
--
2.11.0


2022-06-14 10:15:05

by Ilya Dryomov

[permalink] [raw]
Subject: Re: [PATCH] libceph: check pointer before assigned to "c->rules[]"

On Tue, Jun 14, 2022 at 9:12 AM Li Qiong <[email protected]> wrote:
>
> It should be better to check pointer firstly, then assign it
> to c->rules[]. Refine code a little bit.
>
> Signed-off-by: Li Qiong <[email protected]>
> ---
> net/ceph/osdmap.c | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/net/ceph/osdmap.c b/net/ceph/osdmap.c
> index 2823bb3cff55..6ec5007f96dc 100644
> --- a/net/ceph/osdmap.c
> +++ b/net/ceph/osdmap.c
> @@ -571,9 +571,9 @@ static struct crush_map *crush_decode(void *pbyval, void *end)
> goto bad;
> #endif
> r = kmalloc(struct_size(r, steps, yes), GFP_NOFS);
> - c->rules[i] = r;
> if (r == NULL)
> goto badmem;
> + c->rules[i] = r;
> dout(" rule %d is at %p\n", i, r);
> r->len = yes;
> ceph_decode_copy_safe(p, end, &r->mask, 4, bad); /* 4 u8's */
> --
> 2.11.0
>

This doesn't change anything as c->rules pointer array is zeroed out.
Anyway, applied.

Thanks,

Ilya