Message ID | 20230410091431.74961-1-zhangpeng.00@bytedance.com (mailing list archive) |
---|---|
State | New |
Headers | show |
Series | maple_tree: Use correct variable type in sizeof | expand |
On 2023/4/10 17:14, Peng Zhang wrote: > The original code is: > memset(pivs + tmp, 0, sizeof(unsigned long *) * (max_p - tmp)); > > The type of variable pointed to by pivs is unsigned long, but the type > used in sizeof is a pointer type. Change it to unsigned long. > Maybe add a fix tag? Fixes: 54a611b60590 ("Maple Tree: add new data structure") > Suggested-by: David Binderman <dcb314@hotmail.com> > Signed-off-by: Peng Zhang <zhangpeng.00@bytedance.com> > --- > lib/maple_tree.c | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/lib/maple_tree.c b/lib/maple_tree.c > index 88c44f6d6cee..b06fc5f19b31 100644 > --- a/lib/maple_tree.c > +++ b/lib/maple_tree.c > @@ -3255,7 +3255,7 @@ static inline void mas_destroy_rebalance(struct ma_state *mas, unsigned char end > > if (tmp < max_p) > memset(pivs + tmp, 0, > - sizeof(unsigned long *) * (max_p - tmp)); > + sizeof(unsigned long) * (max_p - tmp)); > > if (tmp < mt_slots[mt]) > memset(slots + tmp, 0, sizeof(void *) * (max_s - tmp));
在 2023/4/10 17:46, Gang Li 写道: > On 2023/4/10 17:14, Peng Zhang wrote: >> The original code is: >> memset(pivs + tmp, 0, sizeof(unsigned long *) * (max_p - tmp)); >> >> The type of variable pointed to by pivs is unsigned long, but the type >> used in sizeof is a pointer type. Change it to unsigned long. >> > > Maybe add a fix tag? > > Fixes: 54a611b60590 ("Maple Tree: add new data structure") Maybe sizeof(void *) is equal to sizeof(unsigned long) in most architectures, so I don't know if it counts as a fix. Thanks. > >> Suggested-by: David Binderman <dcb314@hotmail.com> >> Signed-off-by: Peng Zhang <zhangpeng.00@bytedance.com> >> --- >> lib/maple_tree.c | 2 +- >> 1 file changed, 1 insertion(+), 1 deletion(-) >> >> diff --git a/lib/maple_tree.c b/lib/maple_tree.c >> index 88c44f6d6cee..b06fc5f19b31 100644 >> --- a/lib/maple_tree.c >> +++ b/lib/maple_tree.c >> @@ -3255,7 +3255,7 @@ static inline void mas_destroy_rebalance(struct >> ma_state *mas, unsigned char end >> if (tmp < max_p) >> memset(pivs + tmp, 0, >> - sizeof(unsigned long *) * (max_p - tmp)); >> + sizeof(unsigned long) * (max_p - tmp)); >> if (tmp < mt_slots[mt]) >> memset(slots + tmp, 0, sizeof(void *) * (max_s - tmp)); >
* Peng Zhang <zhangpeng.00@bytedance.com> [230410 05:17]: > The original code is: > memset(pivs + tmp, 0, sizeof(unsigned long *) * (max_p - tmp)); Please don't quote the code for these changes. > > The type of variable pointed to by pivs is unsigned long, but the type > used in sizeof is a pointer type. Change it to unsigned long. > > Suggested-by: David Binderman <dcb314@hotmail.com> > Signed-off-by: Peng Zhang <zhangpeng.00@bytedance.com> Cc stable, fixes line is probably needed here. Reviewed-by: Liam R. Howlett <Liam.Howlett@oracle.com> > --- > lib/maple_tree.c | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/lib/maple_tree.c b/lib/maple_tree.c > index 88c44f6d6cee..b06fc5f19b31 100644 > --- a/lib/maple_tree.c > +++ b/lib/maple_tree.c > @@ -3255,7 +3255,7 @@ static inline void mas_destroy_rebalance(struct ma_state *mas, unsigned char end > > if (tmp < max_p) > memset(pivs + tmp, 0, > - sizeof(unsigned long *) * (max_p - tmp)); > + sizeof(unsigned long) * (max_p - tmp)); > > if (tmp < mt_slots[mt]) > memset(slots + tmp, 0, sizeof(void *) * (max_s - tmp)); > -- > 2.20.1 >
On Mon, Apr 10, 2023 at 06:09:27PM +0800, Peng Zhang wrote: > Maybe sizeof(void *) is equal to sizeof(unsigned long) > in most architectures, so I don't know if it counts as a fix. This is actually required inside the Linux kernel. The only programming model I know where sizeof(void *) != sizeof(unsigned long) is Windows 64-bit userspace.
From: Peng Zhang > Sent: 10 April 2023 11:09 > > 在 2023/4/10 17:46, Gang Li 写道: > > On 2023/4/10 17:14, Peng Zhang wrote: > >> The original code is: > >> memset(pivs + tmp, 0, sizeof(unsigned long *) * (max_p - tmp)); > >> > >> The type of variable pointed to by pivs is unsigned long, but the type > >> used in sizeof is a pointer type. Change it to unsigned long. > >> > > > > Maybe add a fix tag? > > > > Fixes: 54a611b60590 ("Maple Tree: add new data structure") > > Maybe sizeof(void *) is equal to sizeof(unsigned long) > in most architectures, so I don't know if it counts as a fix. Might be worth adding; "Fortunately the sizes are the same." > >> if (tmp < max_p) > >> memset(pivs + tmp, 0, > >> - sizeof(unsigned long *) * (max_p - tmp)); > >> + sizeof(unsigned long) * (max_p - tmp)); sizeof (*pivs) > >> if (tmp < mt_slots[mt]) > >> memset(slots + tmp, 0, sizeof(void *) * (max_s - tmp)); and sizeof (*slots) David - Registered Address Lakeside, Bramley Road, Mount Farm, Milton Keynes, MK1 1PT, UK Registration No: 1397386 (Wales)
diff --git a/lib/maple_tree.c b/lib/maple_tree.c index 88c44f6d6cee..b06fc5f19b31 100644 --- a/lib/maple_tree.c +++ b/lib/maple_tree.c @@ -3255,7 +3255,7 @@ static inline void mas_destroy_rebalance(struct ma_state *mas, unsigned char end if (tmp < max_p) memset(pivs + tmp, 0, - sizeof(unsigned long *) * (max_p - tmp)); + sizeof(unsigned long) * (max_p - tmp)); if (tmp < mt_slots[mt]) memset(slots + tmp, 0, sizeof(void *) * (max_s - tmp));
The original code is: memset(pivs + tmp, 0, sizeof(unsigned long *) * (max_p - tmp)); The type of variable pointed to by pivs is unsigned long, but the type used in sizeof is a pointer type. Change it to unsigned long. Suggested-by: David Binderman <dcb314@hotmail.com> Signed-off-by: Peng Zhang <zhangpeng.00@bytedance.com> --- lib/maple_tree.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)