• Joe Perches's avatar
    checkpatch: attempt to find unnecessary 'out of memory' messages · ebfdc409
    Joe Perches authored
    Logging messages that show some type of "out of memory" error are
    generally unnecessary as there is a generic message and a stack dump
    done by the memory subsystem.
    
    These messages generally increase kernel size without much added value.
    
    Emit a warning on these types of messages.
    
    This test looks for any inserted message function, then looks at the
    previous line for an "if (!foo)" or "if (foo == NULL)" test and then
    looks at the preceding statement for an allocation function like "foo =
    kmalloc()"
    
    ie: this code matches:
    
    	foo = kmalloc();
    	if (foo == NULL) {
    		printk("Out of memory\n");
    		return -ENOMEM;
    	}
    
    This test is very crude and incomplete.
    
    This test can miss quite a lot of of OOM messages that do not have this
    specific form.
    
    ie: this code does not match:
    
    	foo = kmalloc();
    	if (!foo) {
    		rtn = -ENOMEM;
    		printk("Out of memory!\n");
    		goto out;
    	}
    
    This test could also be a false positive when the logging message itself
    does not specify anything about memory, but I did not find any false
    positives in my limited testing.
    
    spatch could be a better solution but correctness seems non-trivial for
    that tool too.
    Signed-off-by: default avatarJoe Perches <joe@perches.com>
    Acked-by: default avatarDan Carpenter <dan.carpenter@oracle.com>
    Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
    Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
    ebfdc409
checkpatch.pl 135 KB