Re: [PATCH] sched/deadline: Don't use dubious signed bitfields

From: Luca Abeni
Date: Fri Oct 13 2017 - 04:36:21 EST


Hi,

On Fri, 13 Oct 2017 10:01:22 +0300
Dan Carpenter <dan.carpenter@xxxxxxxxxx> wrote:

> It doesn't cause a run-time bug, but these bitfields should be unsigned.
> When it's signed ->dl_throttled is set to either 0 or -1, instead of
> 0 and 1 as expected. The sched.h file is included into tons of places
> so Sparse generates a flood of warnings like this:
>
> ./include/linux/sched.h:477:54: error: dubious one-bit signed bitfield
>
> Signed-off-by: Dan Carpenter <dan.carpenter@xxxxxxxxxx>

I did not notice any issue when testing, but if "unsigned int" is the
common practice for bitfields, I agree with the change.

Reviewed-by: Luca Abeni <luca.abeni@xxxxxxxxxxxxxxx>


Thanks,
Luca
>
> diff --git a/include/linux/sched.h b/include/linux/sched.h
> index 0f897dfc195e..105eaff8a5e7 100644
> --- a/include/linux/sched.h
> +++ b/include/linux/sched.h
> @@ -474,10 +474,10 @@ struct sched_dl_entity {
> * conditions between the inactive timer handler and the wakeup
> * code.
> */
> - int dl_throttled : 1;
> - int dl_boosted : 1;
> - int dl_yielded : 1;
> - int dl_non_contending : 1;
> + unsigned int dl_throttled : 1;
> + unsigned int dl_boosted : 1;
> + unsigned int dl_yielded : 1;
> + unsigned int dl_non_contending : 1;
>
> /*
> * Bandwidth enforcement timer. Each -deadline task has its