Re: [PATCH 6/9] drivers/net/wireless/iwlwifi/iwl-4965.c: Correctuse of ! and &

From: Ingo Molnar
Date: Wed Mar 05 2008 - 01:39:32 EST



* Julia Lawall <julia@xxxxxxx> wrote:

> From: Julia Lawall <julia@xxxxxxx>
>
> In commit e6bafba5b4765a5a252f1b8d31cbf6d2459da337, a bug was fixed
> that involved converting !x & y to !(x & y). The code below shows the
> same pattern, and thus should perhaps be fixed in the same way.

> if (sta_ht_inf) {
> if ((!sta_ht_inf->ht_supported) ||
> - (!sta_ht_inf->cap & IEEE80211_HT_CAP_SUP_WIDTH))
> + (!(sta_ht_inf->cap & IEEE80211_HT_CAP_SUP_WIDTH)))
> return 0;

i'm wondering, could Sparse be extended to check for such patterns?

People are regularly running "make C=1" and are sending fixes to make
entire subsystems sparse-warning-free, so Sparse is a nice mechanism
that works and it keeps code clean in the long run.

I dont think the "!X & Y" pattern is ever used legitimately [and even if
it were used legitimately, it's easy to avoid the sparse false positive
- while in the buggy case we have a clear bug].

Ingo
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/