On Mon, Nov 27, 2023 at 03:51:05PM +0300, Dan Carpenter wrote: > My plan was to go through the false positives and manually edit out > stuff like this. The problem is that it's a lot of work and I haven't > done it. I did a similar thing for tracking user data and that works > pretty decently these days. So it's doable. Yes, doing it without specific annotations seems like a pain. I did a little prototype with the existing sparse __nocast for one xfs type that is not very heavily used, and it actually worked pretty good. The major painpoint is that 0 isn't treated special, but with that fixed the amount of churn is mangable. The next big thing is our stupid 64-bit divison helpers (do_div & co), which require helpers to do that case. I'm actually kinda tempted to propose that we drop 32-bit support for xfs to get rid of that and a lot of other ugly things because of do_div. That is unless we can finally agree that the libgcc division helpes might not be great but good enough that we don't want to inflict do_div on folks unless they want to optize that case, which would be even better. Linus, any commens on that? > I'd prefer an annotation that had the type of the unit built in. Annotating the type seems really hard. I think the sparse concept of simply not alowing different of these types to be mixed is good enough without needing to know the actual unit in the type system.