diff options
author | Linus Torvalds <torvalds@woody.linux-foundation.org> | 2007-10-17 12:11:18 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@woody.linux-foundation.org> | 2007-10-17 12:11:18 -0400 |
commit | e6d5a11dad44b8ae18ca8fc4ecb72ccccfa0a2d2 (patch) | |
tree | 7e3837c8f28e2e969a7b7d040b00676c90bf72c7 /kernel/user.c | |
parent | b6257a9036f06878a0f02354d5a07f155e1cfee0 (diff) | |
parent | b9dca1e0fcb696716840a3bc8f20a6941b484dbf (diff) |
Merge git://git.kernel.org/pub/scm/linux/kernel/git/mingo/linux-2.6-sched
* git://git.kernel.org/pub/scm/linux/kernel/git/mingo/linux-2.6-sched:
sched: fix new task startup crash
sched: fix !SYSFS build breakage
sched: fix improper load balance across sched domain
sched: more robust sd-sysctl entry freeing
Diffstat (limited to 'kernel/user.c')
-rw-r--r-- | kernel/user.c | 23 |
1 files changed, 15 insertions, 8 deletions
diff --git a/kernel/user.c b/kernel/user.c index 9cb6f6403561..e91331c457e2 100644 --- a/kernel/user.c +++ b/kernel/user.c | |||
@@ -84,9 +84,6 @@ static struct user_struct *uid_hash_find(uid_t uid, struct hlist_head *hashent) | |||
84 | 84 | ||
85 | #ifdef CONFIG_FAIR_USER_SCHED | 85 | #ifdef CONFIG_FAIR_USER_SCHED |
86 | 86 | ||
87 | static struct kobject uids_kobject; /* represents /sys/kernel/uids directory */ | ||
88 | static DEFINE_MUTEX(uids_mutex); | ||
89 | |||
90 | static void sched_destroy_user(struct user_struct *up) | 87 | static void sched_destroy_user(struct user_struct *up) |
91 | { | 88 | { |
92 | sched_destroy_group(up->tg); | 89 | sched_destroy_group(up->tg); |
@@ -108,6 +105,19 @@ static void sched_switch_user(struct task_struct *p) | |||
108 | sched_move_task(p); | 105 | sched_move_task(p); |
109 | } | 106 | } |
110 | 107 | ||
108 | #else /* CONFIG_FAIR_USER_SCHED */ | ||
109 | |||
110 | static void sched_destroy_user(struct user_struct *up) { } | ||
111 | static int sched_create_user(struct user_struct *up) { return 0; } | ||
112 | static void sched_switch_user(struct task_struct *p) { } | ||
113 | |||
114 | #endif /* CONFIG_FAIR_USER_SCHED */ | ||
115 | |||
116 | #if defined(CONFIG_FAIR_USER_SCHED) && defined(CONFIG_SYSFS) | ||
117 | |||
118 | static struct kobject uids_kobject; /* represents /sys/kernel/uids directory */ | ||
119 | static DEFINE_MUTEX(uids_mutex); | ||
120 | |||
111 | static inline void uids_mutex_lock(void) | 121 | static inline void uids_mutex_lock(void) |
112 | { | 122 | { |
113 | mutex_lock(&uids_mutex); | 123 | mutex_lock(&uids_mutex); |
@@ -254,11 +264,8 @@ static inline void free_user(struct user_struct *up, unsigned long flags) | |||
254 | schedule_work(&up->work); | 264 | schedule_work(&up->work); |
255 | } | 265 | } |
256 | 266 | ||
257 | #else /* CONFIG_FAIR_USER_SCHED */ | 267 | #else /* CONFIG_FAIR_USER_SCHED && CONFIG_SYSFS */ |
258 | 268 | ||
259 | static void sched_destroy_user(struct user_struct *up) { } | ||
260 | static int sched_create_user(struct user_struct *up) { return 0; } | ||
261 | static void sched_switch_user(struct task_struct *p) { } | ||
262 | static inline int user_kobject_create(struct user_struct *up) { return 0; } | 269 | static inline int user_kobject_create(struct user_struct *up) { return 0; } |
263 | static inline void uids_mutex_lock(void) { } | 270 | static inline void uids_mutex_lock(void) { } |
264 | static inline void uids_mutex_unlock(void) { } | 271 | static inline void uids_mutex_unlock(void) { } |
@@ -277,7 +284,7 @@ static inline void free_user(struct user_struct *up, unsigned long flags) | |||
277 | kmem_cache_free(uid_cachep, up); | 284 | kmem_cache_free(uid_cachep, up); |
278 | } | 285 | } |
279 | 286 | ||
280 | #endif /* CONFIG_FAIR_USER_SCHED */ | 287 | #endif |
281 | 288 | ||
282 | /* | 289 | /* |
283 | * Locate the user_struct for the passed UID. If found, take a ref on it. The | 290 | * Locate the user_struct for the passed UID. If found, take a ref on it. The |