Skip to contentSkip to conversation

cppcheck and btrfs

DISCUSSION Chris Samuel 2 participants 2 messages Mar 14, 2011 Btrfs file system

lore
Share & tools
lore
#0 lore raw

Hi Chris, et. al,

I've recently come across cppcheck (static analyser for C code) and ran it on the current btrfs directory from Linus's repo and it's reported the following potential issues:

linux-2.6$ cppcheck -q fs/btrfs/
[fs/btrfs/compression.c:343]: (error) Data is allocated but not initialized:
cb
[fs/btrfs/compression.c:583]: (error) Data is allocated but not initialized:
cb
[fs/btrfs/delayed-ref.c:649]: (error) Data is allocated but not initialized:
ref
[fs/btrfs/delayed-ref.c:694]: (error) Data is allocated but not initialized:
ref
[fs/btrfs/extent-tree.c:5766]: (error) Data is allocated but not initialized:
extent_op
[fs/btrfs/extent-tree.c:5768]: (error) Data is allocated but not initialized:
extent_op
[fs/btrfs/transaction.c:1161]: (error) Data is allocated but not initialized:
ac
[fs/btrfs/volumes.c:1387]: (error) Possible null pointer dereference:
fs_devices
[fs/btrfs/volumes.c:3636]: (error) Memory leak: device

Now I'm not really a programmer (much less a kernel one) but I do see people using it discover issues in kernel code.

Are these issues real or bugs in cppcheck ?

cheers!
Chris

Signature · 4 lines
 Chris Samuel  :  http://www.csamuel.org/  :  Melbourne, VIC

This email may come with a PGP signature as a file. Do not panic.
For more info see: http://en.wikipedia.org/wiki/OpenPGP
#1 lore raw
Quoted 6 lines · Chris Samuel

Hi Chris, et. al,

I've recently come across cppcheck (static analyser for C code) and ran it on the current btrfs directory from Linus's repo and it's reported the following potential issues:

Quoted 15 lines

linux-2.6$ cppcheck -q fs/btrfs/
[fs/btrfs/compression.c:343]: (error) Data is allocated but not initialized:
cb
[fs/btrfs/compression.c:583]: (error) Data is allocated but not initialized:
cb
[fs/btrfs/delayed-ref.c:649]: (error) Data is allocated but not initialized:
ref
[fs/btrfs/delayed-ref.c:694]: (error) Data is allocated but not initialized:
ref
[fs/btrfs/extent-tree.c:5766]: (error) Data is allocated but not initialized:
extent_op
[fs/btrfs/extent-tree.c:5768]: (error) Data is allocated but not initialized:
extent_op
[fs/btrfs/transaction.c:1161]: (error) Data is allocated but not initialized:
ac

All of these seems to be warnings cautioning about passing a pointer to an uninitialized area of memory to some function. But in most cases it's an accepted convention, where the called function unconditionally initializes that memory area, before using it, so it's OK.

Quoted 2 lines

[fs/btrfs/volumes.c:1387]: (error) Possible null pointer dereference:
fs_devices

This one is very unlikely, however I doubt a lot of people tested Btrfs seeding functionality, so it's probably the only one worth looking at.

Quoted 1 line

[fs/btrfs/volumes.c:3636]: (error) Memory leak: device

This one is bogus, device struct is linked via fs_devices->devices list.

Quoted 12 lines

Now I'm not really a programmer (much less a kernel one) but I do see people using it discover issues in kernel code.

Are these issues real or bugs in cppcheck ?

cheers!
Chris

Signature · 4 lines
 Chris Samuel  :  http://www.csamuel.org/  :  Melbourne, VIC

This email may come with a PGP signature as a file. Do not panic.
For more info see: http://en.wikipedia.org/wiki/OpenPGP

Thanks,

Ilya