Re: [PATCH v2 1/3] staging: rtl8723bs: Modify struct rx_pkt_attrib attribute bdecrypted

Dan Carpenter
2025-04-03T12:13:34Z

On Wed, Apr 02, 2025 at 09:41:57PM +0100, Greg KH wrote:
> On Wed, Apr 02, 2025 at 10:34:22PM +0200, Julia Lawall wrote:
> >
> >
> > On Wed, 2 Apr 2025, Greg KH wrote:
> >
> > > On Wed, Apr 02, 2025 at 08:16:42PM +0300, Erick Karanja wrote:
> > > > Standardize boolean representation by ensuring consistency,
> > > > replace instances of 1/0 with true/false where boolean logic is implied,
> > > > as some definitions already use true/false.
> > > > This improves code clarity and aligns with the kernel’s bool type usage.
> > > >
> > > > Signed-off-by: Erick Karanja <karanja99erick@gmail.com>
> > > > ---
> > > > drivers/staging/rtl8723bs/core/rtw_recv.c | 2 +-
> > > > 1 file changed, 1 insertion(+), 1 deletion(-)
> > > >
> > > > diff --git a/drivers/staging/rtl8723bs/core/rtw_recv.c b/drivers/staging/rtl8723bs/core/rtw_recv.c
> > > > index a389ba5ecc6f..fd04dbacb50f 100644
> > > > --- a/drivers/staging/rtl8723bs/core/rtw_recv.c
> > > > +++ b/drivers/staging/rtl8723bs/core/rtw_recv.c
> > > > @@ -1358,7 +1358,7 @@ static signed int validate_80211w_mgmt(struct adapter *adapter, union recv_frame
> > > > u8 *mgmt_DATA;
> > > > u32 data_len = 0;
> > > >
> > > > - pattrib->bdecrypted = 0;
> > > > + pattrib->bdecrypted = false;
> > >
> > > but bdecrypted is a u8, not a boolean type. So setting it to "false"
> > > does not seem correct here, right?
> >
> > Is false different than 0?
>
> Does C guarantee that? I can never remember. I don't think it
> guarantees that a 'bool' will only be 8 bits, or am I mistaken there
> too?
>

These patches are fine. This does come from the hardware but the
patches don't change the layout of the struct, just the right
hand side of the assignment.

The C standard doesn't specify the size of _Bool. It just has to
be unsigned and at least one bit large. The surprising thing about
_Bool type is that it doesn't truncate anything. So you can do:
"_Bool x = y & BIT(20);" and it works, but if we use unsigned char
then we would have to add a !!. "unsigned char x = !!(y & BIT(20));"

Btw, true/false are not keywords in C. They're defined in
include/linux/stddef.h.

The main review here is if there is a typo where we accidentally type
true instead of false.

regards,
dan carpenter