[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <b72d866d-1dce-7260-7f1e-54be9fd25e97@inria.fr>
Date: Wed, 2 Nov 2022 18:17:04 +0100 (CET)
From: Julia Lawall <julia.lawall@...ia.fr>
To: "Jason A. Donenfeld" <Jason@...c4.com>
cc: Kees Cook <keescook@...omium.org>, cocci@...ia.fr,
Linus Torvalds <torvalds@...ux-foundation.org>,
Alexey Dobriyan <adobriyan@...il.com>,
akpm@...ux-foundation.org, linux-kernel@...r.kernel.org,
mm-commits@...r.kernel.org, masahiroy@...nel.org,
gregkh@...uxfoundation.org, andriy.shevchenko@...ux.intel.com,
Stephen Rothwell <sfr@...b.auug.org.au>
Subject: Re: [cocci] [PATCH -mm] -funsigned-char, x86: make struct
p4_event_bind::cntr signed array
On Wed, 26 Oct 2022, Jason A. Donenfeld wrote:
> On Wed, Oct 26, 2022 at 03:50:25AM +0200, Jason A. Donenfeld wrote:
> > The traditional objdump comparison does work, though. It produces a good
>
> Another thing that appears to work well is just using Coccinelle
> scripts. I've had some success just scrolling through the results of:
>
> @@
> char c;
> expression E;
> @@
> (
> * E > c
> |
> * E >= c
> |
> * E < c
> |
> * E <= c
> )
>
> That also triggers on explicitly signed chars, and examining those
> reveals that quite a bit of code in the tree already does do the right
> thing, which is good.
>
> From looking at this and objdump output, it looks like most naked-char
> usage that isn't for strings is actually already assuming it's unsigned,
> using it as a byte. I'll continue to churn, and I'm sure I'll miss a few
> things here and there, but all and all, I don't think this is looking as
> terrible as I initially feared.
>
> I'm CC'ing the Coccinelle people to see if they have any nice ideas on
> improvements. Specifically, the thing we're trying to identify is:
>
> - Usage of vanilla `char`, without a `signed` or `unsigned` qualifier,
> where:
Try putting
disable optional_qualifier
between the initial @@, to avoid the implicit matching of signed and
unsigned.
> - It's not being used for characters; and
> - It's doing something that assumes it is signed, such as various
> types of comparisons or decrements.
I took a quick look at the article, but I'm not completely sure what you
are getting at here. Could you give some examples of what you do and
don't want to find?
You don't want the case where c is 'x', for some x?
julia
> LWN wrote a summary of the general problem, in case that helps describe
> what would be useful: https://lwn.net/SubscriberLink/911914/f90c2ed1af23cbc4/
>
> Any nice Cocci tricks for this?
>
> Jason
>
Powered by blists - more mailing lists