* + lib-vsprintf-split-out-sprintf-and-friends.patch added to mm-nonmm-unstable branch
@ 2023-08-14 18:37 Andrew Morton
2023-08-15 14:24 ` Alexey Dobriyan
0 siblings, 1 reply; 3+ messages in thread
From: Andrew Morton @ 2023-08-14 18:37 UTC (permalink / raw)
To: mm-commits, senozhatsky, rostedt, pmladek, linux, glider, elver,
dvyukov, andriy.shevchenko, akpm
The patch titled
Subject: lib/vsprintf: split out sprintf() and friends
has been added to the -mm mm-nonmm-unstable branch. Its filename is
lib-vsprintf-split-out-sprintf-and-friends.patch
This patch will shortly appear at
https://git.kernel.org/pub/scm/linux/kernel/git/akpm/25-new.git/tree/patches/lib-vsprintf-split-out-sprintf-and-friends.patch
This patch will later appear in the mm-nonmm-unstable branch at
git://git.kernel.org/pub/scm/linux/kernel/git/akpm/mm
Before you just go and hit "reply", please:
a) Consider who else should be cc'ed
b) Prefer to cc a suitable mailing list as well
c) Ideally: find the original patch on the mailing list and do a
reply-to-all to that, adding suitable additional cc's
*** Remember to use Documentation/process/submit-checklist.rst when testing your code ***
The -mm tree is included into linux-next via the mm-everything
branch at git://git.kernel.org/pub/scm/linux/kernel/git/akpm/mm
and is updated there every 2-3 working days
------------------------------------------------------
From: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
Subject: lib/vsprintf: split out sprintf() and friends
Date: Mon, 14 Aug 2023 19:33:43 +0300
Patch series "lib/vsprintf: Rework header inclusions", v3.
Some patches that reduce the mess with the header inclusions related to
vsprintf.c module. Each patch has its own description, and has no
dependencies to each other, except the collisions over modifications of
the same places. Hence the series.
This patch (of 2):
kernel.h is being used as a dump for all kinds of stuff for a long time.
sprintf() and friends are used in many drivers without need of the full
kernel.h dependency train with it.
Here is the attempt on cleaning it up by splitting out sprintf() and
friends.
Link: https://lkml.kernel.org/r/20230814163344.17429-1-andriy.shevchenko@linux.intel.com
Link: https://lkml.kernel.org/r/20230814163344.17429-2-andriy.shevchenko@linux.intel.com
Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
Cc: Alexander Potapenko <glider@google.com>
Cc: Dmitry Vyukov <dvyukov@google.com>
Cc: kasan-dev@googlegroups.com
Cc: Marco Elver <elver@google.com>
Cc: Petr Mladek <pmladek@suse.com>
Cc: Rasmus Villemoes <linux@rasmusvillemoes.dk>
Cc: Sergey Senozhatsky <senozhatsky@chromium.org>
Cc: Steven Rostedt (Google) <rostedt@goodmis.org>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
---
include/linux/kernel.h | 30 +-----------------------------
include/linux/sprintf.h | 25 +++++++++++++++++++++++++
lib/test_printf.c | 1 +
lib/vsprintf.c | 1 +
4 files changed, 28 insertions(+), 29 deletions(-)
--- a/include/linux/kernel.h~lib-vsprintf-split-out-sprintf-and-friends
+++ a/include/linux/kernel.h
@@ -29,6 +29,7 @@
#include <linux/panic.h>
#include <linux/printk.h>
#include <linux/build_bug.h>
+#include <linux/sprintf.h>
#include <linux/static_call_types.h>
#include <linux/instruction_pointer.h>
#include <asm/byteorder.h>
@@ -203,35 +204,6 @@ static inline void might_fault(void) { }
void do_exit(long error_code) __noreturn;
-extern int num_to_str(char *buf, int size,
- unsigned long long num, unsigned int width);
-
-/* lib/printf utilities */
-
-extern __printf(2, 3) int sprintf(char *buf, const char * fmt, ...);
-extern __printf(2, 0) int vsprintf(char *buf, const char *, va_list);
-extern __printf(3, 4)
-int snprintf(char *buf, size_t size, const char *fmt, ...);
-extern __printf(3, 0)
-int vsnprintf(char *buf, size_t size, const char *fmt, va_list args);
-extern __printf(3, 4)
-int scnprintf(char *buf, size_t size, const char *fmt, ...);
-extern __printf(3, 0)
-int vscnprintf(char *buf, size_t size, const char *fmt, va_list args);
-extern __printf(2, 3) __malloc
-char *kasprintf(gfp_t gfp, const char *fmt, ...);
-extern __printf(2, 0) __malloc
-char *kvasprintf(gfp_t gfp, const char *fmt, va_list args);
-extern __printf(2, 0)
-const char *kvasprintf_const(gfp_t gfp, const char *fmt, va_list args);
-
-extern __scanf(2, 3)
-int sscanf(const char *, const char *, ...);
-extern __scanf(2, 0)
-int vsscanf(const char *, const char *, va_list);
-
-extern int no_hash_pointers_enable(char *str);
-
extern int get_option(char **str, int *pint);
extern char *get_options(const char *str, int nints, int *ints);
extern unsigned long long memparse(const char *ptr, char **retptr);
--- /dev/null
+++ a/include/linux/sprintf.h
@@ -0,0 +1,25 @@
+/* SPDX-License-Identifier: GPL-2.0 */
+#ifndef _LINUX_KERNEL_SPRINTF_H_
+#define _LINUX_KERNEL_SPRINTF_H_
+
+#include <linux/compiler_attributes.h>
+#include <linux/types.h>
+
+int num_to_str(char *buf, int size, unsigned long long num, unsigned int width);
+
+__printf(2, 3) int sprintf(char *buf, const char * fmt, ...);
+__printf(2, 0) int vsprintf(char *buf, const char *, va_list);
+__printf(3, 4) int snprintf(char *buf, size_t size, const char *fmt, ...);
+__printf(3, 0) int vsnprintf(char *buf, size_t size, const char *fmt, va_list args);
+__printf(3, 4) int scnprintf(char *buf, size_t size, const char *fmt, ...);
+__printf(3, 0) int vscnprintf(char *buf, size_t size, const char *fmt, va_list args);
+__printf(2, 3) __malloc char *kasprintf(gfp_t gfp, const char *fmt, ...);
+__printf(2, 0) __malloc char *kvasprintf(gfp_t gfp, const char *fmt, va_list args);
+__printf(2, 0) const char *kvasprintf_const(gfp_t gfp, const char *fmt, va_list args);
+
+__scanf(2, 3) int sscanf(const char *, const char *, ...);
+__scanf(2, 0) int vsscanf(const char *, const char *, va_list);
+
+int no_hash_pointers_enable(char *str);
+
+#endif /* _LINUX_KERNEL_SPRINTF_H */
--- a/lib/test_printf.c~lib-vsprintf-split-out-sprintf-and-friends
+++ a/lib/test_printf.c
@@ -12,6 +12,7 @@
#include <linux/random.h>
#include <linux/rtc.h>
#include <linux/slab.h>
+#include <linux/sprintf.h>
#include <linux/string.h>
#include <linux/bitmap.h>
--- a/lib/vsprintf.c~lib-vsprintf-split-out-sprintf-and-friends
+++ a/lib/vsprintf.c
@@ -34,6 +34,7 @@
#include <linux/dcache.h>
#include <linux/cred.h>
#include <linux/rtc.h>
+#include <linux/sprintf.h>
#include <linux/time.h>
#include <linux/uuid.h>
#include <linux/of.h>
_
Patches currently in -mm which might be from andriy.shevchenko@linux.intel.com are
lib-vsprintf-split-out-sprintf-and-friends.patch
lib-vsprintf-declare-no_hash_pointers-in-sprintfh.patch
^ permalink raw reply [flat|nested] 3+ messages in thread* Re: + lib-vsprintf-split-out-sprintf-and-friends.patch added to mm-nonmm-unstable branch
2023-08-14 18:37 + lib-vsprintf-split-out-sprintf-and-friends.patch added to mm-nonmm-unstable branch Andrew Morton
@ 2023-08-15 14:24 ` Alexey Dobriyan
2023-08-15 14:39 ` Andy Shevchenko
0 siblings, 1 reply; 3+ messages in thread
From: Alexey Dobriyan @ 2023-08-15 14:24 UTC (permalink / raw)
To: linux-kernel
Cc: linux-kernel, senozhatsky, rostedt, pmladek, linux, glider, elver,
dvyukov, andriy.shevchenko, akpm
On Mon, Aug 14, 2023 at 11:37:51AM -0700, Andrew Morton wrote:
> Some patches that reduce the mess with the header inclusions related to
> vsprintf.c module. Each patch has its own description, and has no
> dependencies to each other, except the collisions over modifications of
> the same places. Hence the series.
>
>
> This patch (of 2):
>
> kernel.h is being used as a dump for all kinds of stuff for a long time.
> sprintf() and friends are used in many drivers without need of the full
> kernel.h dependency train with it.
>
> Here is the attempt on cleaning it up by splitting out sprintf() and
> friends.
> --- /dev/null
> +++ a/include/linux/sprintf.h
> @@ -0,0 +1,25 @@
> +/* SPDX-License-Identifier: GPL-2.0 */
> +#ifndef _LINUX_KERNEL_SPRINTF_H_
> +#define _LINUX_KERNEL_SPRINTF_H_
> +
> +#include <linux/compiler_attributes.h>
> +#include <linux/types.h>
> +
> +int num_to_str(char *buf, int size, unsigned long long num, unsigned int width);
> +
> +__printf(2, 3) int sprintf(char *buf, const char * fmt, ...);
> +__printf(2, 0) int vsprintf(char *buf, const char *, va_list);
> +__printf(3, 4) int snprintf(char *buf, size_t size, const char *fmt, ...);
> +__printf(3, 0) int vsnprintf(char *buf, size_t size, const char *fmt, va_list args);
> +__printf(3, 4) int scnprintf(char *buf, size_t size, const char *fmt, ...);
> +__printf(3, 0) int vscnprintf(char *buf, size_t size, const char *fmt, va_list args);
> +__printf(2, 3) __malloc char *kasprintf(gfp_t gfp, const char *fmt, ...);
> +__printf(2, 0) __malloc char *kvasprintf(gfp_t gfp, const char *fmt, va_list args);
> +__printf(2, 0) const char *kvasprintf_const(gfp_t gfp, const char *fmt, va_list args);
> +
> +__scanf(2, 3) int sscanf(const char *, const char *, ...);
> +__scanf(2, 0) int vsscanf(const char *, const char *, va_list);
I'd suggest to leave scanf alone and rename file to printf.h
Some archs have such files already (printf.c)
^ permalink raw reply [flat|nested] 3+ messages in thread
* Re: + lib-vsprintf-split-out-sprintf-and-friends.patch added to mm-nonmm-unstable branch
2023-08-15 14:24 ` Alexey Dobriyan
@ 2023-08-15 14:39 ` Andy Shevchenko
0 siblings, 0 replies; 3+ messages in thread
From: Andy Shevchenko @ 2023-08-15 14:39 UTC (permalink / raw)
To: Alexey Dobriyan
Cc: linux-kernel, senozhatsky, rostedt, pmladek, linux, glider, elver,
dvyukov, akpm
On Tue, Aug 15, 2023 at 05:24:27PM +0300, Alexey Dobriyan wrote:
> On Mon, Aug 14, 2023 at 11:37:51AM -0700, Andrew Morton wrote:
...
> > +__scanf(2, 3) int sscanf(const char *, const char *, ...);
> > +__scanf(2, 0) int vsscanf(const char *, const char *, va_list);
>
> I'd suggest to leave scanf alone and rename file to printf.h
> Some archs have such files already (printf.c)
if you are talking about these
$ git ls-files */printf.c
arch/m68k/sun3/prom/printf.c
arch/sparc/prom/printf.c
arch/x86/boot/printf.c
they have no business with the main Linux kernel code.
I don't think we need to go that direction.
--
With Best Regards,
Andy Shevchenko
^ permalink raw reply [flat|nested] 3+ messages in thread
end of thread, other threads:[~2023-08-15 14:39 UTC | newest]
Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2023-08-14 18:37 + lib-vsprintf-split-out-sprintf-and-friends.patch added to mm-nonmm-unstable branch Andrew Morton
2023-08-15 14:24 ` Alexey Dobriyan
2023-08-15 14:39 ` Andy Shevchenko
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.