Commit 6061d949 authored by Joe Perches's avatar Joe Perches Committed by Linus Torvalds

include/ and checkpatch: prefer __scanf to __attribute__((format(scanf,...)

It's equivalent to __printf, so prefer __scanf.
Signed-off-by: default avatarJoe Perches <joe@perches.com>
Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
parent 97e834c5
...@@ -87,7 +87,8 @@ ...@@ -87,7 +87,8 @@
*/ */
#define __pure __attribute__((pure)) #define __pure __attribute__((pure))
#define __aligned(x) __attribute__((aligned(x))) #define __aligned(x) __attribute__((aligned(x)))
#define __printf(a,b) __attribute__((format(printf,a,b))) #define __printf(a, b) __attribute__((format(printf, a, b)))
#define __scanf(a, b) __attribute__((format(scanf, a, b)))
#define noinline __attribute__((noinline)) #define noinline __attribute__((noinline))
#define __attribute_const__ __attribute__((__const__)) #define __attribute_const__ __attribute__((__const__))
#define __maybe_unused __attribute__((unused)) #define __maybe_unused __attribute__((unused))
......
...@@ -328,10 +328,10 @@ extern __printf(2, 3) ...@@ -328,10 +328,10 @@ extern __printf(2, 3)
char *kasprintf(gfp_t gfp, const char *fmt, ...); char *kasprintf(gfp_t gfp, const char *fmt, ...);
extern char *kvasprintf(gfp_t gfp, const char *fmt, va_list args); extern char *kvasprintf(gfp_t gfp, const char *fmt, va_list args);
extern int sscanf(const char *, const char *, ...) extern __scanf(2, 3)
__attribute__ ((format (scanf, 2, 3))); int sscanf(const char *, const char *, ...);
extern int vsscanf(const char *, const char *, va_list) extern __scanf(2, 0)
__attribute__ ((format (scanf, 2, 0))); int vsscanf(const char *, const char *, va_list);
extern int get_option(char **str, int *pint); extern int get_option(char **str, int *pint);
extern char *get_options(const char *str, int nints, int *ints); extern char *get_options(const char *str, int nints, int *ints);
......
...@@ -139,9 +139,9 @@ int xenbus_transaction_start(struct xenbus_transaction *t); ...@@ -139,9 +139,9 @@ int xenbus_transaction_start(struct xenbus_transaction *t);
int xenbus_transaction_end(struct xenbus_transaction t, int abort); int xenbus_transaction_end(struct xenbus_transaction t, int abort);
/* Single read and scanf: returns -errno or num scanned if > 0. */ /* Single read and scanf: returns -errno or num scanned if > 0. */
__scanf(4, 5)
int xenbus_scanf(struct xenbus_transaction t, int xenbus_scanf(struct xenbus_transaction t,
const char *dir, const char *node, const char *fmt, ...) const char *dir, const char *node, const char *fmt, ...);
__attribute__((format(scanf, 4, 5)));
/* Single printf and write: returns -errno or 0. */ /* Single printf and write: returns -errno or 0. */
__printf(4, 5) __printf(4, 5)
......
...@@ -3123,6 +3123,12 @@ sub process { ...@@ -3123,6 +3123,12 @@ sub process {
"__printf(string-index, first-to-check) is preferred over __attribute__((format(printf, string-index, first-to-check)))\n" . $herecurr); "__printf(string-index, first-to-check) is preferred over __attribute__((format(printf, string-index, first-to-check)))\n" . $herecurr);
} }
# Check for __attribute__ format(scanf, prefer __scanf
if ($line =~ /\b__attribute__\s*\(\s*\(\s*format\s*\(\s*scanf\b/) {
WARN("PREFER_SCANF",
"__scanf(string-index, first-to-check) is preferred over __attribute__((format(scanf, string-index, first-to-check)))\n" . $herecurr);
}
# check for sizeof(&) # check for sizeof(&)
if ($line =~ /\bsizeof\s*\(\s*\&/) { if ($line =~ /\bsizeof\s*\(\s*\&/) {
WARN("SIZEOF_ADDRESS", WARN("SIZEOF_ADDRESS",
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment