On 2023/4/23 03:48, Dan Carpenter wrote:
The warnings from this are quite promising.
When you're writing a check, you start with a simple idea and then try
it and then filter out the common false positives.
The first 10 warnings are from loops like:
p = NULL;
for (i = 0; i < limit; i++) {
if (i == 0)
p = non_null();
else
*p = something();
}
Smatch doesn't handle loops correctly. (I know how to fix this but I've
never gotten around to it because it would make Smatch slow)...
So instead of that maybe I would do a hack to silence this type of
warning. Not sure what...
drivers/usb/gadget/udc/amd5536udc_pci.c:61 udc_pci_remove() warn: pointer dereferenced without being set '&udc->gadget'
This one is interesting. Seems like a real bug.
drivers/mtd/ubi/block.c:391 ubiblock_create() warn: pointer dereferenced without being set 'dev->gd'
This one too. So maybe we could make this a separate warning where
NULL dereferences happen on error paths. Or maybe when they happen in
printks.
So there are ways to take this first draft and massage it and get
fewer false positives, by filtering false positives or taking things
which work and creating new checks instead.
Hi Dan,
thanks for your efforts. After finishing the current task list, we can
first ask senior students to check this result quickly and then assign
highly-to-be True Positive to students.
BTW, do you have any plans to improve the code readability, directory
orgranization, documentation etc. of Smatch? It's hard even for senior
students to start with.
Anyway, results attached.
regards,
dan carpenter