[PATCH] unwind: Fix signedness bug in unwind_deferred_request()

Dan Carpenter posted 1 patch 1 week, 5 days ago
There is a newer version of this series
kernel/unwind/deferred.c | 3 +--
1 file changed, 1 insertion(+), 2 deletions(-)
[PATCH] unwind: Fix signedness bug in unwind_deferred_request()
Posted by Dan Carpenter 1 week, 5 days ago
The "bit" value comes from "work->bit".  It is set to -1 if we cancel
the work in unwind_deferred_cancel().  It needs to be signed because
we check for negative values.  Change the type from unsigned long to int.

Fixes: 357eda2d7450 ("unwind deferred: Use SRCU unwind_deferred_task_work()")
Signed-off-by: Dan Carpenter <dan.carpenter@linaro.org>
---
 kernel/unwind/deferred.c | 3 +--
 1 file changed, 1 insertion(+), 2 deletions(-)

diff --git a/kernel/unwind/deferred.c b/kernel/unwind/deferred.c
index a88fb481c4a3..8dc11e0d9374 100644
--- a/kernel/unwind/deferred.c
+++ b/kernel/unwind/deferred.c
@@ -232,8 +232,7 @@ int unwind_deferred_request(struct unwind_work *work, u64 *cookie)
 	struct unwind_task_info *info = &current->unwind_info;
 	int twa_mode = TWA_RESUME;
 	unsigned long old, bits;
-	unsigned long bit;
-	int ret;
+	int bit, ret;
 
 	*cookie = 0;
 
-- 
2.51.0
Re: [PATCH] unwind: Fix signedness bug in unwind_deferred_request()
Posted by Steven Rostedt 1 week, 5 days ago
On Wed, 19 Nov 2025 11:10:43 +0300
Dan Carpenter <dan.carpenter@linaro.org> wrote:

> The "bit" value comes from "work->bit".  It is set to -1 if we cancel
> the work in unwind_deferred_cancel().  It needs to be signed because
> we check for negative values.  Change the type from unsigned long to int.
> 
> Fixes: 357eda2d7450 ("unwind deferred: Use SRCU unwind_deferred_task_work()")
> Signed-off-by: Dan Carpenter <dan.carpenter@linaro.org>
> ---
>  kernel/unwind/deferred.c | 3 +--
>  1 file changed, 1 insertion(+), 2 deletions(-)
> 
> diff --git a/kernel/unwind/deferred.c b/kernel/unwind/deferred.c
> index a88fb481c4a3..8dc11e0d9374 100644
> --- a/kernel/unwind/deferred.c
> +++ b/kernel/unwind/deferred.c
> @@ -232,8 +232,7 @@ int unwind_deferred_request(struct unwind_work *work, u64 *cookie)
>  	struct unwind_task_info *info = &current->unwind_info;
>  	int twa_mode = TWA_RESUME;
>  	unsigned long old, bits;
> -	unsigned long bit;
> -	int ret;
> +	int bit, ret;

I'm fine with the change to bit, but please do not put them on the same
row. I only do that when the values are related. bit and ret are *not*
related.

Thanks,

-- Steve


>  
>  	*cookie = 0;
>
Re: [PATCH] unwind: Fix signedness bug in unwind_deferred_request()
Posted by Dan Carpenter 1 week, 5 days ago
On Wed, Nov 19, 2025 at 09:24:58AM -0500, Steven Rostedt wrote:
> On Wed, 19 Nov 2025 11:10:43 +0300
> Dan Carpenter <dan.carpenter@linaro.org> wrote:
> 
> > The "bit" value comes from "work->bit".  It is set to -1 if we cancel
> > the work in unwind_deferred_cancel().  It needs to be signed because
> > we check for negative values.  Change the type from unsigned long to int.
> > 
> > Fixes: 357eda2d7450 ("unwind deferred: Use SRCU unwind_deferred_task_work()")
> > Signed-off-by: Dan Carpenter <dan.carpenter@linaro.org>
> > ---
> >  kernel/unwind/deferred.c | 3 +--
> >  1 file changed, 1 insertion(+), 2 deletions(-)
> > 
> > diff --git a/kernel/unwind/deferred.c b/kernel/unwind/deferred.c
> > index a88fb481c4a3..8dc11e0d9374 100644
> > --- a/kernel/unwind/deferred.c
> > +++ b/kernel/unwind/deferred.c
> > @@ -232,8 +232,7 @@ int unwind_deferred_request(struct unwind_work *work, u64 *cookie)
> >  	struct unwind_task_info *info = &current->unwind_info;
> >  	int twa_mode = TWA_RESUME;
> >  	unsigned long old, bits;
> > -	unsigned long bit;
> > -	int ret;
> > +	int bit, ret;
> 
> I'm fine with the change to bit, but please do not put them on the same
> row. I only do that when the values are related. bit and ret are *not*
> related.

Sure, I've sent a v2.

regards,
dan carpenter