On Fri, Mar 31, 2017 at 06:59:19PM -0700, Chewie Lin wrote: > Replace string with formatted arguments in the dev_warn() call. It removes > the checkpatch warning: > > WARNING: Prefer using "%s", __func__ to embedded function names > #417: FILE: main_usb.c:417: > + "usb_device_reset fail status=%d\n", status); > > total: 0 errors, 1 warnings, 1058 lines checked > > And after fix: > > main_usb.c has no obvious style problems and is ready for submission. > - "usb_device_reset fail status=%d\n", status); > + "%s=%d\n", "usb_device_reset fail status", status); Would you mind explaining the meaning of that warning? Incidentally, why not "%se_reset fail status=%d\n", "usb_devic", status); - it would produce the identical output and silences checkpatch even more reliably. Discuss. Sarcasm aside, when you are proposing a change, there are several questions you really must ask yourself and be able to answer. First and foremost, of course, is * Why is it an improvement? If the answer to that was "it makes a warning go away", the next questions are * What are we warned about? * What is problematic in the original variant? * Is the replacement free from the problem we had in the original? and if the answer to any of that is "I don't know", the next step is _not_ "send it anyway". "Try to figure out" might be a good idea, with usual heuristics regarding the reading comprehension ("if a sentence remains a mystery, see if there are any unfamiliar words skipped at the first reading and find what they mean", etc.) applying. In this particular case the part you've apparently skipped was, indeed, critical - "__func__". I am not trying to defend the quality of checkpatch - the warning is badly worded, the tool is badly written and more often than not its suggestions reflect nothing but authors' arbitrary preferences. This one, however, does have some rationale behind it. Namely, if some debugging output contains the name of a function that has produced it, having that name spelled out in format string is not a good idea. If that code gets moved elsewhere one would have to replace the name in format string or face confusing messages refering to the function where that code used to be. Since __func__ is interpreted as a constant string initialized with the name of the function it's used in, it is possible to avoid spelling the function name out - instead of "my_function: pink elephants; reduce the daily intake to %d glasses\n", n one could use "%s: pink elephants; reduce the daily intake to %d glasses\n", __func__, n producing the same output and avoiding the need to adjust anything when the whole thing is moved to another function. It's not particularly big deal, but it's a more or less reasonable suggestion. Your change, of course, has achieved only one thing - it has moved the explicitly spelled out function name out of format string. It's still just as explicitly spelled out, still would need to be adjusted if moved to another function and the whole thing has become harder to read and understand since you've buried other parts of message in the place where it's harder to follow. Again, checkpatch warning is badly written, but the main problem with your posting is not that you had been confused by checkpatch - it's that you have posted it based on an incomprehensible message with no better rationale than "it shuts checkpatch up, dunno why and what about". _______________________________________________ devel mailing list devel@xxxxxxxxxxxxxxxxxxxxxx http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel