[42/50] sem: Split out sem_types.h

Message ID 20231216033300.3553457-10-kent.overstreet@linux.dev
State New
Headers
Series big header dependency cleanup targeting sched.h |

Commit Message

Kent Overstreet Dec. 16, 2023, 3:32 a.m. UTC
  More sched.h dependency pruning.

Signed-off-by: Kent Overstreet <kent.overstreet@linux.dev>
---
 include/linux/audit.h     |  1 +
 include/linux/sched.h     |  3 ++-
 include/linux/sem.h       | 10 +---------
 include/linux/sem_types.h | 13 +++++++++++++
 4 files changed, 17 insertions(+), 10 deletions(-)
 create mode 100644 include/linux/sem_types.h
  

Comments

Geert Uytterhoeven Dec. 20, 2023, 11:53 a.m. UTC | #1
Hi Kent,

On Sat, Dec 16, 2023 at 4:37 AM Kent Overstreet
<kent.overstreet@linux.dev> wrote:
> More sched.h dependency pruning.
>
> Signed-off-by: Kent Overstreet <kent.overstreet@linux.dev>

Thanks for your patch, which is now commit eb72d60ccaed883a ("sem:
Split out sem_types.h") in next-20231220.

$ make ARCH=m68k defconfig arch/m68k/kernel/asm-offsets.i
*** Default configuration is based on 'multi_defconfig'
#
# No change to .config
#
  UPD     include/config/kernel.release
  UPD     include/generated/utsrelease.h
  CC      arch/m68k/kernel/asm-offsets.s
In file included from arch/m68k/kernel/asm-offsets.c:15:
./include/linux/sched.h:551:3: error: conflicting types for
‘____cacheline_aligned’
  551 | } ____cacheline_aligned;
      |   ^~~~~~~~~~~~~~~~~~~~~
./include/linux/sched.h:509:3: note: previous declaration of
‘____cacheline_aligned’ was here
  509 | } ____cacheline_aligned;
      |   ^~~~~~~~~~~~~~~~~~~~~
make[3]: *** [scripts/Makefile.build:116:
arch/m68k/kernel/asm-offsets.s] Error 1
make[2]: *** [Makefile:1191: prepare0] Error 2
make[1]: *** [Makefile:350: __build_one_by_one] Error 2
make: *** [Makefile:234: __sub-make] Error 2

> --- a/include/linux/audit.h
> +++ b/include/linux/audit.h
> @@ -400,6 +400,7 @@ static inline void audit_ptrace(struct task_struct *t)
>  }
>
>                                 /* Private API (for audit.c only) */
> +struct kern_ipc_perm;
>  extern void __audit_ipc_obj(struct kern_ipc_perm *ipcp);
>  extern void __audit_ipc_set_perm(unsigned long qbytes, uid_t uid, gid_t gid, umode_t mode);
>  extern void __audit_bprm(struct linux_binprm *bprm);
> diff --git a/include/linux/sched.h b/include/linux/sched.h
> index 157e7af36bb7..98885e3a81e8 100644
> --- a/include/linux/sched.h
> +++ b/include/linux/sched.h
> @@ -13,12 +13,13 @@
>
>  #include <linux/irqflags_types.h>
>  #include <linux/pid_types.h>
> -#include <linux/sem.h>
> +#include <linux/sem_types.h>
>  #include <linux/shm.h>
>  #include <linux/kmsan_types.h>
>  #include <linux/mutex_types.h>
>  #include <linux/plist_types.h>
>  #include <linux/hrtimer_types.h>
> +#include <linux/timer_types.h>
>  #include <linux/seccomp_types.h>
>  #include <linux/nodemask_types.h>
>  #include <linux/rcupdate.h>
> diff --git a/include/linux/sem.h b/include/linux/sem.h
> index 5608a500c43e..c4deefe42aeb 100644
> --- a/include/linux/sem.h
> +++ b/include/linux/sem.h
> @@ -3,25 +3,17 @@
>  #define _LINUX_SEM_H
>
>  #include <uapi/linux/sem.h>
> +#include <linux/sem_types.h>
>
>  struct task_struct;
> -struct sem_undo_list;
>
>  #ifdef CONFIG_SYSVIPC
>
> -struct sysv_sem {
> -       struct sem_undo_list *undo_list;
> -};
> -
>  extern int copy_semundo(unsigned long clone_flags, struct task_struct *tsk);
>  extern void exit_sem(struct task_struct *tsk);
>
>  #else
>
> -struct sysv_sem {
> -       /* empty */
> -};
> -
>  static inline int copy_semundo(unsigned long clone_flags, struct task_struct *tsk)
>  {
>         return 0;
> diff --git a/include/linux/sem_types.h b/include/linux/sem_types.h
> new file mode 100644
> index 000000000000..73df1971a7ae
> --- /dev/null
> +++ b/include/linux/sem_types.h
> @@ -0,0 +1,13 @@
> +/* SPDX-License-Identifier: GPL-2.0 */
> +#ifndef _LINUX_SEM_TYPES_H
> +#define _LINUX_SEM_TYPES_H
> +
> +struct sem_undo_list;
> +
> +struct sysv_sem {
> +#ifdef CONFIG_SYSVIPC
> +       struct sem_undo_list *undo_list;
> +#endif
> +};
> +
> +#endif /* _LINUX_SEM_TYPES_H */
>
Gr{oetje,eeting}s,

                        Geert
  
Kent Overstreet Dec. 20, 2023, 9:39 p.m. UTC | #2
On Wed, Dec 20, 2023 at 12:53:46PM +0100, Geert Uytterhoeven wrote:
> Hi Kent,
> 
> On Sat, Dec 16, 2023 at 4:37 AM Kent Overstreet
> <kent.overstreet@linux.dev> wrote:
> > More sched.h dependency pruning.
> >
> > Signed-off-by: Kent Overstreet <kent.overstreet@linux.dev>
> 
> Thanks for your patch, which is now commit eb72d60ccaed883a ("sem:
> Split out sem_types.h") in next-20231220.
> 
> $ make ARCH=m68k defconfig arch/m68k/kernel/asm-offsets.i
> *** Default configuration is based on 'multi_defconfig'
> #
> # No change to .config
> #
>   UPD     include/config/kernel.release
>   UPD     include/generated/utsrelease.h
>   CC      arch/m68k/kernel/asm-offsets.s
> In file included from arch/m68k/kernel/asm-offsets.c:15:
> ./include/linux/sched.h:551:3: error: conflicting types for
> ‘____cacheline_aligned’
>   551 | } ____cacheline_aligned;
>       |   ^~~~~~~~~~~~~~~~~~~~~
> ./include/linux/sched.h:509:3: note: previous declaration of
> ‘____cacheline_aligned’ was here
>   509 | } ____cacheline_aligned;
>       |   ^~~~~~~~~~~~~~~~~~~~~
> make[3]: *** [scripts/Makefile.build:116:
> arch/m68k/kernel/asm-offsets.s] Error 1
> make[2]: *** [Makefile:1191: prepare0] Error 2
> make[1]: *** [Makefile:350: __build_one_by_one] Error 2
> make: *** [Makefile:234: __sub-make] Error 2

Is this a build failure on linux-next, or that specific commit?

It looks like this should be fixed in a later commit that includes
cache.h in sched.h; I'll move that include back to this patch.
  
Geert Uytterhoeven Jan. 2, 2024, 8:47 a.m. UTC | #3
Hi Kent,

On Wed, Dec 20, 2023 at 10:39 PM Kent Overstreet
<kent.overstreet@linux.dev> wrote:
> On Wed, Dec 20, 2023 at 12:53:46PM +0100, Geert Uytterhoeven wrote:
> > On Sat, Dec 16, 2023 at 4:37 AM Kent Overstreet
> > <kent.overstreet@linux.dev> wrote:
> > > More sched.h dependency pruning.
> > >
> > > Signed-off-by: Kent Overstreet <kent.overstreet@linux.dev>
> >
> > Thanks for your patch, which is now commit eb72d60ccaed883a ("sem:
> > Split out sem_types.h") in next-20231220.
> >
> > $ make ARCH=m68k defconfig arch/m68k/kernel/asm-offsets.i
> > *** Default configuration is based on 'multi_defconfig'
> > #
> > # No change to .config
> > #
> >   UPD     include/config/kernel.release
> >   UPD     include/generated/utsrelease.h
> >   CC      arch/m68k/kernel/asm-offsets.s
> > In file included from arch/m68k/kernel/asm-offsets.c:15:
> > ./include/linux/sched.h:551:3: error: conflicting types for
> > ‘____cacheline_aligned’
> >   551 | } ____cacheline_aligned;
> >       |   ^~~~~~~~~~~~~~~~~~~~~
> > ./include/linux/sched.h:509:3: note: previous declaration of
> > ‘____cacheline_aligned’ was here
> >   509 | } ____cacheline_aligned;
> >       |   ^~~~~~~~~~~~~~~~~~~~~
> > make[3]: *** [scripts/Makefile.build:116:
> > arch/m68k/kernel/asm-offsets.s] Error 1
> > make[2]: *** [Makefile:1191: prepare0] Error 2
> > make[1]: *** [Makefile:350: __build_one_by_one] Error 2
> > make: *** [Makefile:234: __sub-make] Error 2
>
> Is this a build failure on linux-next, or that specific commit?

On this specific commit.

> It looks like this should be fixed in a later commit that includes
> cache.h in sched.h; I'll move that include back to this patch.

Indeed. The robots reported a build failure, and bisection arrived
at this (different) build failure first.

Gr{oetje,eeting}s,

                        Geert
  

Patch

diff --git a/include/linux/audit.h b/include/linux/audit.h
index 51b1b7054a23..93d97b56e1e4 100644
--- a/include/linux/audit.h
+++ b/include/linux/audit.h
@@ -400,6 +400,7 @@  static inline void audit_ptrace(struct task_struct *t)
 }
 
 				/* Private API (for audit.c only) */
+struct kern_ipc_perm;
 extern void __audit_ipc_obj(struct kern_ipc_perm *ipcp);
 extern void __audit_ipc_set_perm(unsigned long qbytes, uid_t uid, gid_t gid, umode_t mode);
 extern void __audit_bprm(struct linux_binprm *bprm);
diff --git a/include/linux/sched.h b/include/linux/sched.h
index 157e7af36bb7..98885e3a81e8 100644
--- a/include/linux/sched.h
+++ b/include/linux/sched.h
@@ -13,12 +13,13 @@ 
 
 #include <linux/irqflags_types.h>
 #include <linux/pid_types.h>
-#include <linux/sem.h>
+#include <linux/sem_types.h>
 #include <linux/shm.h>
 #include <linux/kmsan_types.h>
 #include <linux/mutex_types.h>
 #include <linux/plist_types.h>
 #include <linux/hrtimer_types.h>
+#include <linux/timer_types.h>
 #include <linux/seccomp_types.h>
 #include <linux/nodemask_types.h>
 #include <linux/rcupdate.h>
diff --git a/include/linux/sem.h b/include/linux/sem.h
index 5608a500c43e..c4deefe42aeb 100644
--- a/include/linux/sem.h
+++ b/include/linux/sem.h
@@ -3,25 +3,17 @@ 
 #define _LINUX_SEM_H
 
 #include <uapi/linux/sem.h>
+#include <linux/sem_types.h>
 
 struct task_struct;
-struct sem_undo_list;
 
 #ifdef CONFIG_SYSVIPC
 
-struct sysv_sem {
-	struct sem_undo_list *undo_list;
-};
-
 extern int copy_semundo(unsigned long clone_flags, struct task_struct *tsk);
 extern void exit_sem(struct task_struct *tsk);
 
 #else
 
-struct sysv_sem {
-	/* empty */
-};
-
 static inline int copy_semundo(unsigned long clone_flags, struct task_struct *tsk)
 {
 	return 0;
diff --git a/include/linux/sem_types.h b/include/linux/sem_types.h
new file mode 100644
index 000000000000..73df1971a7ae
--- /dev/null
+++ b/include/linux/sem_types.h
@@ -0,0 +1,13 @@ 
+/* SPDX-License-Identifier: GPL-2.0 */
+#ifndef _LINUX_SEM_TYPES_H
+#define _LINUX_SEM_TYPES_H
+
+struct sem_undo_list;
+
+struct sysv_sem {
+#ifdef CONFIG_SYSVIPC
+	struct sem_undo_list *undo_list;
+#endif
+};
+
+#endif /* _LINUX_SEM_TYPES_H */