Re: [PATCH v4 0/7] firmware: smccc: Add basic SMCCC v1.2 + ARCH_SOC_ID support
From: Arnd Bergmann <arnd@arndb.de>
Date: 2020-05-21 10:31:54
Also in:
lkml
On Thu, May 21, 2020 at 12:14 PM Russell King - ARM Linux admin [off-list ref] wrote:
On Thu, May 21, 2020 at 11:06:23AM +0200, Arnd Bergmann wrote:quoted
Note that the warning should come up for either W=1 or C=1, and I also think that new code should generally be written sparse-clean and have no warnings with 'make C=1' as a rule.No, absolutely not, that's a stupid idea, there are corner cases where hiding a sparse warning is the wrong thing to do. Look at many of the cases in fs/ for example. See https://lkml.org/lkml/2004/9/12/249 which should make anyone who sees a use of __force in some random code stop and question why it is there, and whether it is actually correct, or just there to hide a sparse warning. Remember, sparse is there to warn that something isn't quite right, and the view taken is, if it isn't right, then we don't "cast the warning away" with __force, even if we intend not to fix the code immediately. So, going for "sparse-clean" is actually not correct. Going for "no unnecessary warnings" is. And don't think what I've said above doesn't happen; I've rejected patches from people who've gone around trying to fix every sparse warning that they see by throwing __force incorrectly at it. The thing is, if you hide all the warnings, even for incorrect code, then sparse becomes completely useless to identify where things in the code are not quite correct.
Adding __force is almost always the wrong solution, and I explictly
was not talking about existing code here where changing it would
risk introducing bugs or require bad hacks.
However, when writing a new driver, sparse warnings usually
indicate that you are doing something wrong that is better addressed
by doing something different that does not involve adding __force.
Arnd
_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel