Hey, So, I stumbled on a new check that could be added to checkpatch. Since it's in Perl, I'm reluctant to try it.
Seems many drivers got to a point where they now call (let's say) spi_set_drvdata(), but never access that information via spi_get_drvdata(). Reasons for this seem to be: 1. They got converted to device-managed functions and there is no longer a remove hook to require the _get_drvdata() access 2. They look like they were copied from a driver that had a _set_drvdata() and when the code got finalized, the _set_drvdata() was omitted There are a few false positives that I can notice at a quick look, like the data being set via some xxx_set_drvdata() and retrieved via a dev_get_drvdata(). I think checkpatch reporting these as well would be acceptable simply from a reviewability perspective. I did a shell script to quickly check these. See below. It's pretty badly written but it is enough for me to gather a list. And I wrote it in 5 minutes :P I initially noticed this in some IIO drivers, and then I suspected that this may be more widespread. The shell script gathers a list of xxx_set_drvdata() functions then greps through all files and also checks if there are any matching xxx_get_drvdata(). Thanks Alex Shell script: ----------------------------------------------------------------------- #!/bin/bash fns1=$(git grep _set_drvdata | cut -d: -f2 | cut -d'(' -f1 | sort -u) for fn in $fns1 ; do if [ "$fn" == "//pci_set_drvdata" ] ; then continue fi if [ "$fn" == '``dev_set_drvdata' ] ; then continue fi if [ "$fn" == '"pci_set_drvdata' ] ; then continue fi if [[ "$fn" == *"_set_drvdata" ]]; then fns2="$fns2 $fn" fi done fns1=$(echo $fns2 | tr ' ' '\n' | sort -u | tr '\n' ' ') for fn in $fns1 ; do get_fn=$(echo $fn | sed 's/_set_/_get_/g') echo "Matching $fn - $get_fn" for file in $(git grep $fn | cut -d: -f1 | sort -u) ; do if ! grep -q $get_fn $file ; then echo " Maybe $file" fi done done -----------------------------------------------------------------------