diff options
Diffstat (limited to 'kernel')
| -rw-r--r-- | kernel/cgroup.c | 10 | ||||
| -rw-r--r-- | kernel/posix-timers.c | 6 |
2 files changed, 10 insertions, 6 deletions
diff --git a/kernel/cgroup.c b/kernel/cgroup.c index fe00b3b983a8..2606d0fb4e54 100644 --- a/kernel/cgroup.c +++ b/kernel/cgroup.c | |||
| @@ -702,7 +702,7 @@ static int rebind_subsystems(struct cgroupfs_root *root, | |||
| 702 | * any child cgroups exist. This is theoretically supportable | 702 | * any child cgroups exist. This is theoretically supportable |
| 703 | * but involves complex error handling, so it's being left until | 703 | * but involves complex error handling, so it's being left until |
| 704 | * later */ | 704 | * later */ |
| 705 | if (!list_empty(&cgrp->children)) | 705 | if (root->number_of_cgroups > 1) |
| 706 | return -EBUSY; | 706 | return -EBUSY; |
| 707 | 707 | ||
| 708 | /* Process each subsystem */ | 708 | /* Process each subsystem */ |
| @@ -1024,7 +1024,7 @@ static int cgroup_get_sb(struct file_system_type *fs_type, | |||
| 1024 | if (ret == -EBUSY) { | 1024 | if (ret == -EBUSY) { |
| 1025 | mutex_unlock(&cgroup_mutex); | 1025 | mutex_unlock(&cgroup_mutex); |
| 1026 | mutex_unlock(&inode->i_mutex); | 1026 | mutex_unlock(&inode->i_mutex); |
| 1027 | goto drop_new_super; | 1027 | goto free_cg_links; |
| 1028 | } | 1028 | } |
| 1029 | 1029 | ||
| 1030 | /* EBUSY should be the only error here */ | 1030 | /* EBUSY should be the only error here */ |
| @@ -1073,10 +1073,11 @@ static int cgroup_get_sb(struct file_system_type *fs_type, | |||
| 1073 | 1073 | ||
| 1074 | return simple_set_mnt(mnt, sb); | 1074 | return simple_set_mnt(mnt, sb); |
| 1075 | 1075 | ||
| 1076 | free_cg_links: | ||
| 1077 | free_cg_links(&tmp_cg_links); | ||
| 1076 | drop_new_super: | 1078 | drop_new_super: |
| 1077 | up_write(&sb->s_umount); | 1079 | up_write(&sb->s_umount); |
| 1078 | deactivate_super(sb); | 1080 | deactivate_super(sb); |
| 1079 | free_cg_links(&tmp_cg_links); | ||
| 1080 | return ret; | 1081 | return ret; |
| 1081 | } | 1082 | } |
| 1082 | 1083 | ||
| @@ -2934,9 +2935,6 @@ int cgroup_clone(struct task_struct *tsk, struct cgroup_subsys *subsys, | |||
| 2934 | again: | 2935 | again: |
| 2935 | root = subsys->root; | 2936 | root = subsys->root; |
| 2936 | if (root == &rootnode) { | 2937 | if (root == &rootnode) { |
| 2937 | printk(KERN_INFO | ||
| 2938 | "Not cloning cgroup for unused subsystem %s\n", | ||
| 2939 | subsys->name); | ||
| 2940 | mutex_unlock(&cgroup_mutex); | 2938 | mutex_unlock(&cgroup_mutex); |
| 2941 | return 0; | 2939 | return 0; |
| 2942 | } | 2940 | } |
diff --git a/kernel/posix-timers.c b/kernel/posix-timers.c index 5e79c662294b..a140e44eebba 100644 --- a/kernel/posix-timers.c +++ b/kernel/posix-timers.c | |||
| @@ -197,6 +197,11 @@ static int common_timer_create(struct k_itimer *new_timer) | |||
| 197 | return 0; | 197 | return 0; |
| 198 | } | 198 | } |
| 199 | 199 | ||
| 200 | static int no_timer_create(struct k_itimer *new_timer) | ||
| 201 | { | ||
| 202 | return -EOPNOTSUPP; | ||
| 203 | } | ||
| 204 | |||
| 200 | /* | 205 | /* |
| 201 | * Return nonzero if we know a priori this clockid_t value is bogus. | 206 | * Return nonzero if we know a priori this clockid_t value is bogus. |
| 202 | */ | 207 | */ |
| @@ -248,6 +253,7 @@ static __init int init_posix_timers(void) | |||
| 248 | .clock_getres = hrtimer_get_res, | 253 | .clock_getres = hrtimer_get_res, |
| 249 | .clock_get = posix_get_monotonic_raw, | 254 | .clock_get = posix_get_monotonic_raw, |
| 250 | .clock_set = do_posix_clock_nosettime, | 255 | .clock_set = do_posix_clock_nosettime, |
| 256 | .timer_create = no_timer_create, | ||
| 251 | }; | 257 | }; |
| 252 | 258 | ||
| 253 | register_posix_clock(CLOCK_REALTIME, &clock_realtime); | 259 | register_posix_clock(CLOCK_REALTIME, &clock_realtime); |
