[Ocfs2-devel] [patch] Fix: 'return -ENOMEM' instead of 'return ENOMEM'
roel kluin
roel.kluin at gmail.com
Thu Nov 12 01:31:23 PST 2009
> * Andrew Morton <akpm at linux-foundation.org> wrote:
>> Andy, can we have a checkpatch rule please?
>
> Note, that will upset creative uses of error codes i guess, such as
> fs/xfs/.
>
> But yeah, +1 from me too.
>
> Ob'post'mortem - looked for similar patterns in the kernel and there's
> quite a few bugs there:
>
> include/net/inet_hashtables.h: return ENOMEM; # bug
> drivers/scsi/aic7xxx/aic7xxx_osm.c: return ENOMEM; # works but weird
> drivers/scsi/cxgb3i/cxgb3i_offload.c: return ENOMEM; # works but weird
> fs/ocfs2/dlm/dlmrecovery.c: return EAGAIN; # bug
> drivers/block/cciss_scsi.c: return ENXIO; # works but weird
> drivers/gpu/drm/radeon/radeon_irq.c: return EINVAL; # bug
> drivers/gpu/drm/radeon/radeon_irq.c: return EINVAL; # bug
> drivers/isdn/hardware/mISDN/hfcmulti.c: return EINVAL; # bug
I noticed some of these as well. I found some more and sent
a few patches last night with a regex like:
git grep -n -E "[^=]=[[:space:]]*E[[:upper:]2]+ *;"
I am not 100% sure this doesn't give many falsies, I am not at home
so cannot test right now. Something like this can show how
common/uncommon these are:
git grep -E "[^=]=[[:space:]]*E[[:upper:]2]+ *;" |
sed -r "s/^([^:]*:).*(return|[^=]=)[[:space:]]*(-?E)[[:upper:]2]+
*;.*$/\1 \3/" |
sort | uniq -c
> 5 out of 8 places look buggy - i.e. more than 60% - a checkpatch warning
> would avoid real bugs here. (even ignoring the cleanliness effects of
> using proper error propagation)
> Ingo
Thanks for picking this up,
Roel
More information about the Ocfs2-devel
mailing list