Skip to contentSkip to conversation

Build breakage if !SYSFS

PATCH In review Ralf Baechle 3 participants 5 messages Oct 16, 2007 – Oct 17, 2007

Subsystems (2)
lore
Share & tools
lore
#0 lore raw

Changeset 5cb350baf580017da38199625b7365b1763d7180 causes build breakage if sysfs support is disabled:

kernel/built-in.o: In function `uids_kobject_init':
(.init.text+0x1488): undefined reference to kernel_subsys' kernel/built-in.o: In function uids_kobject_init':
(.init.text+0x1490): undefined reference to kernel_subsys' kernel/built-in.o: In function uids_kobject_init':
(.init.text+0x1480): undefined reference to kernel_subsys' kernel/built-in.o: In function uids_kobject_init':
(.init.text+0x1494): undefined reference to `kernel_subsys'

This breaks for example mipssim_defconfig.

Ralf

#1 lore raw
Quoted 12 lines · Ralf Baechle

Changeset 5cb350baf580017da38199625b7365b1763d7180 causes build breakage if sysfs support is disabled:

kernel/built-in.o: In function `uids_kobject_init':
(.init.text+0x1488): undefined reference to kernel_subsys' kernel/built-in.o: In function uids_kobject_init':
(.init.text+0x1490): undefined reference to kernel_subsys' kernel/built-in.o: In function uids_kobject_init':
(.init.text+0x1480): undefined reference to kernel_subsys' kernel/built-in.o: In function uids_kobject_init':
(.init.text+0x1494): undefined reference to `kernel_subsys'

Quoted 3 lines

This breaks for example mipssim_defconfig.

Ralf

Hi Ralf,

Can you try this and confirm if it works?

--

When CONFIG_SYSFS is not set, CONFIG_FAIR_USER_SCHED fails to build with

kernel/built-in.o: In function `uids_kobject_init':
(.init.text+0x1488): undefined reference to kernel_subsys' kernel/built-in.o: In function uids_kobject_init':
(.init.text+0x1490): undefined reference to kernel_subsys' kernel/built-in.o: In function uids_kobject_init':
(.init.text+0x1480): undefined reference to kernel_subsys' kernel/built-in.o: In function uids_kobject_init':
(.init.text+0x1494): undefined reference to `kernel_subsys'

This patch fixes this build error.

---
 include/linux/sched.h |    2 ++
 kernel/user.c         |   23 +++++++++++++++--------
 2 files changed, 17 insertions(+), 8 deletions(-)
include/linux/sched.h +2 -0
Index: current/include/linux/sched.h
===================================================================
@@ -602,10 +602,12 @@ struct user_struct {
 
 #ifdef CONFIG_FAIR_USER_SCHED
 	struct task_group *tg;
+#ifdef CONFIG_SYSFS
 	struct kset kset;
 	struct subsys_attribute user_attr;
 	struct work_struct work;
 #endif
+#endif
 };
 
 #ifdef CONFIG_FAIR_USER_SCHED
kernel/user.c +15 -8
Index: current/kernel/user.c
===================================================================
@@ -87,9 +87,6 @@ static inline struct user_struct *uid_ha
 
 #ifdef CONFIG_FAIR_USER_SCHED
 
-static struct kobject uids_kobject; /* represents /sys/kernel/uids directory */
-static DEFINE_MUTEX(uids_mutex);
-
 static void sched_destroy_user(struct user_struct *up)
 {
 	sched_destroy_group(up->tg);
@@ -111,6 +108,19 @@ static void sched_switch_user(struct tas
 	sched_move_task(p);
 }
 
+#else	/* CONFIG_FAIR_USER_SCHED */
+
+static void sched_destroy_user(struct user_struct *up) { }
+static int sched_create_user(struct user_struct *up) { return 0; }
+static void sched_switch_user(struct task_struct *p) { }
+
+#endif	/* CONFIG_FAIR_USER_SCHED */
+
+#if defined(CONFIG_FAIR_USER_SCHED) && defined(CONFIG_SYSFS)
+
+static struct kobject uids_kobject; /* represents /sys/kernel/uids directory */
+static DEFINE_MUTEX(uids_mutex);
+
 static inline void uids_mutex_lock(void)
 {
 	mutex_lock(&uids_mutex);
@@ -257,11 +267,8 @@ static inline void free_user(struct user
 	schedule_work(&up->work);
 }
 
-#else	/* CONFIG_FAIR_USER_SCHED */
+#else	/* CONFIG_FAIR_USER_SCHED && CONFIG_SYSFS */
 
-static void sched_destroy_user(struct user_struct *up) { }
-static int sched_create_user(struct user_struct *up) { return 0; }
-static void sched_switch_user(struct task_struct *p) { }
 static inline int user_kobject_create(struct user_struct *up) { return 0; }
 static inline void uids_mutex_lock(void) { }
 static inline void uids_mutex_unlock(void) { }
@@ -280,7 +287,7 @@ static inline void free_user(struct user
 	kmem_cache_free(uid_cachep, up);
 }
 
-#endif	/* CONFIG_FAIR_USER_SCHED */
+#endif
 
 /*
  * Locate the user_struct for the passed UID.  If found, take a ref on it.  The
Signature · 2 lines
regards,
Dhaval
#2 lore raw
Quoted 13 lines · Dhaval Giani
Quoted 12 lines · Ralf Baechle

Changeset 5cb350baf580017da38199625b7365b1763d7180 causes build breakage if sysfs support is disabled:

kernel/built-in.o: In function `uids_kobject_init':
(.init.text+0x1488): undefined reference to kernel_subsys' kernel/built-in.o: In function uids_kobject_init':
(.init.text+0x1490): undefined reference to kernel_subsys' kernel/built-in.o: In function uids_kobject_init':
(.init.text+0x1480): undefined reference to kernel_subsys' kernel/built-in.o: In function uids_kobject_init':
(.init.text+0x1494): undefined reference to `kernel_subsys'

Quoted 7 lines
Quoted 3 lines

This breaks for example mipssim_defconfig.

Ralf

Hi Ralf,

Can you try this and confirm if it works?

Yes, this solves the issue.

Thanks,

Ralf

#3 lore raw

PATCH 1/1 Fix build breakage if !SYSFS

Quoted 17 lines · Ralf Baechle
Quoted 15 lines · Dhaval Giani
Quoted 14 lines · Ralf Baechle

Changeset 5cb350baf580017da38199625b7365b1763d7180 causes build breakage if sysfs support is disabled:

kernel/built-in.o: In function `uids_kobject_init':
(.init.text+0x1488): undefined reference to kernel_subsys' kernel/built-in.o: In function uids_kobject_init':
(.init.text+0x1490): undefined reference to kernel_subsys' kernel/built-in.o: In function uids_kobject_init':
(.init.text+0x1480): undefined reference to kernel_subsys' kernel/built-in.o: In function uids_kobject_init':
(.init.text+0x1494): undefined reference to `kernel_subsys'

This breaks for example mipssim_defconfig.

Quoted 7 lines
Quoted 5 lines
Quoted 1 line

Ralf

Hi Ralf,

Can you try this and confirm if it works?

Yes, this solves the issue.

Hi,

Could you please include this patch to fix the build breakage?

thanks
Dhaval

--

When CONFIG_SYSFS is not set, CONFIG_FAIR_USER_SCHED fails to build with

kernel/built-in.o: In function `uids_kobject_init':
(.init.text+0x1488): undefined reference to kernel_subsys' kernel/built-in.o: In function uids_kobject_init':
(.init.text+0x1490): undefined reference to kernel_subsys' kernel/built-in.o: In function uids_kobject_init':
(.init.text+0x1480): undefined reference to kernel_subsys' kernel/built-in.o: In function uids_kobject_init':
(.init.text+0x1494): undefined reference to `kernel_subsys'

This patch fixes this build error.

---
 include/linux/sched.h |    2 ++
 kernel/user.c         |   23 +++++++++++++++--------
 2 files changed, 17 insertions(+), 8 deletions(-)
include/linux/sched.h +2 -0
Index: current/include/linux/sched.h
===================================================================
@@ -602,10 +602,12 @@ struct user_struct {
 
 #ifdef CONFIG_FAIR_USER_SCHED
 	struct task_group *tg;
+#ifdef CONFIG_SYSFS
 	struct kset kset;
 	struct subsys_attribute user_attr;
 	struct work_struct work;
 #endif
+#endif
 };
 
 #ifdef CONFIG_FAIR_USER_SCHED
kernel/user.c +15 -8
Index: current/kernel/user.c
===================================================================
@@ -87,9 +87,6 @@ static inline struct user_struct *uid_ha
 
 #ifdef CONFIG_FAIR_USER_SCHED
 
-static struct kobject uids_kobject; /* represents /sys/kernel/uids directory */
-static DEFINE_MUTEX(uids_mutex);
-
 static void sched_destroy_user(struct user_struct *up)
 {
 	sched_destroy_group(up->tg);
@@ -111,6 +108,19 @@ static void sched_switch_user(struct tas
 	sched_move_task(p);
 }
 
+#else	/* CONFIG_FAIR_USER_SCHED */
+
+static void sched_destroy_user(struct user_struct *up) { }
+static int sched_create_user(struct user_struct *up) { return 0; }
+static void sched_switch_user(struct task_struct *p) { }
+
+#endif	/* CONFIG_FAIR_USER_SCHED */
+
+#if defined(CONFIG_FAIR_USER_SCHED) && defined(CONFIG_SYSFS)
+
+static struct kobject uids_kobject; /* represents /sys/kernel/uids directory */
+static DEFINE_MUTEX(uids_mutex);
+
 static inline void uids_mutex_lock(void)
 {
 	mutex_lock(&uids_mutex);
@@ -257,11 +267,8 @@ static inline void free_user(struct user
 	schedule_work(&up->work);
 }
 
-#else	/* CONFIG_FAIR_USER_SCHED */
+#else	/* CONFIG_FAIR_USER_SCHED && CONFIG_SYSFS */
 
-static void sched_destroy_user(struct user_struct *up) { }
-static int sched_create_user(struct user_struct *up) { return 0; }
-static void sched_switch_user(struct task_struct *p) { }
 static inline int user_kobject_create(struct user_struct *up) { return 0; }
 static inline void uids_mutex_lock(void) { }
 static inline void uids_mutex_unlock(void) { }
@@ -280,7 +287,7 @@ static inline void free_user(struct user
 	kmem_cache_free(uid_cachep, up);
 }
 
-#endif	/* CONFIG_FAIR_USER_SCHED */
+#endif
 
 /*
  * Locate the user_struct for the passed UID.  If found, take a ref on it.  The
Signature · 2 lines
regards,
Dhaval
#4 lore raw

Re: [PATCH] Fix build breakage if !SYSFS

Quoted 1 line · Dhaval Giani

Could you please include this patch to fix the build breakage?

thanks - i've added this to the scheduler patch-queue.

Ingo