Hi Takashi, Sparse reports a lot of new issues in our last checks with more options:
export ARCH=x86_64 CF="-Wsparse-error -Wsparse-all -Wno-bitwise-pointer -Wno-pointer-arith -Wno-typesign -Wnoshadow -Wno-sizeof-bool" make -k sound/ C=2
most are linked to the __user and pcm_format_t restricted types, but I found the simpler ones below which are useless comparisons. I can send a patch for the last but not sure how to address the first two.
Thanks for your feedback -Pierre
sound/core/info.c:95:38: error: self-comparison always evaluates to false
if (pos < 0 || (long) pos != pos || (ssize_t) count < 0) return false;
not sure what the second comparison is meant to check?
sound/drivers/opl3/opl3_midi.c:183:60: error: self-comparison always evaluates to false
This indeed makes no sense. the voice_time and vp->time are not changed in the loop, the test is either redundant or something else is missing.
sound/pci/lx6464es/lx_core.c:677:34: error: self-comparison always evaluates to false
That seems like dead code indeed:
u32 channels = runtime->channels;
if (runtime->channels != channels) dev_err(chip->card->dev, "channel count mismatch: %d vs %d", runtime->channels, channels);