Commit 0685ab4f authored by Linus Torvalds's avatar Linus Torvalds

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: bump version of kernel/sched_debug.c
  sched: fix minimum granularity tunings
  sched: fix RLIMIT_CPU comment
  sched: fix kernel/acct.c comment
  sched: fix prev_stime calculation
  sched: don't forget to unlock uids_mutex on error paths
parents ff1ea52f f7b9329e
...@@ -374,7 +374,9 @@ static cputime_t task_stime(struct task_struct *p) ...@@ -374,7 +374,9 @@ static cputime_t task_stime(struct task_struct *p)
stime = nsec_to_clock_t(p->se.sum_exec_runtime) - stime = nsec_to_clock_t(p->se.sum_exec_runtime) -
cputime_to_clock_t(task_utime(p)); cputime_to_clock_t(task_utime(p));
p->prev_stime = max(p->prev_stime, clock_t_to_cputime(stime)); if (stime >= 0)
p->prev_stime = max(p->prev_stime, clock_t_to_cputime(stime));
return p->prev_stime; return p->prev_stime;
} }
#endif #endif
......
...@@ -12,7 +12,7 @@ ...@@ -12,7 +12,7 @@
* then it defines them prior including asm-generic/resource.h. ) * then it defines them prior including asm-generic/resource.h. )
*/ */
#define RLIMIT_CPU 0 /* CPU time in ms */ #define RLIMIT_CPU 0 /* CPU time in sec */
#define RLIMIT_FSIZE 1 /* Maximum filesize */ #define RLIMIT_FSIZE 1 /* Maximum filesize */
#define RLIMIT_DATA 2 /* max data size */ #define RLIMIT_DATA 2 /* max data size */
#define RLIMIT_STACK 3 /* max stack size */ #define RLIMIT_STACK 3 /* max stack size */
......
...@@ -413,7 +413,7 @@ static u32 encode_float(u64 value) ...@@ -413,7 +413,7 @@ static u32 encode_float(u64 value)
* The acct_process() call is the workhorse of the process * The acct_process() call is the workhorse of the process
* accounting system. The struct acct is built here and then written * accounting system. The struct acct is built here and then written
* into the accounting file. This function should only be called from * into the accounting file. This function should only be called from
* do_exit(). * do_exit() or when switching to a different output file.
*/ */
/* /*
......
...@@ -199,7 +199,7 @@ static int sched_debug_show(struct seq_file *m, void *v) ...@@ -199,7 +199,7 @@ static int sched_debug_show(struct seq_file *m, void *v)
u64 now = ktime_to_ns(ktime_get()); u64 now = ktime_to_ns(ktime_get());
int cpu; int cpu;
SEQ_printf(m, "Sched Debug Version: v0.06-v22, %s %.*s\n", SEQ_printf(m, "Sched Debug Version: v0.07, %s %.*s\n",
init_utsname()->release, init_utsname()->release,
(int)strcspn(init_utsname()->version, " "), (int)strcspn(init_utsname()->version, " "),
init_utsname()->version); init_utsname()->version);
......
...@@ -22,7 +22,7 @@ ...@@ -22,7 +22,7 @@
/* /*
* Targeted preemption latency for CPU-bound tasks: * Targeted preemption latency for CPU-bound tasks:
* (default: 20ms * ilog(ncpus), units: nanoseconds) * (default: 20ms * (1 + ilog(ncpus)), units: nanoseconds)
* *
* NOTE: this latency value is not the same as the concept of * NOTE: this latency value is not the same as the concept of
* 'timeslice length' - timeslices in CFS are of variable length * 'timeslice length' - timeslices in CFS are of variable length
...@@ -36,14 +36,14 @@ unsigned int sysctl_sched_latency = 20000000ULL; ...@@ -36,14 +36,14 @@ unsigned int sysctl_sched_latency = 20000000ULL;
/* /*
* Minimal preemption granularity for CPU-bound tasks: * Minimal preemption granularity for CPU-bound tasks:
* (default: 1 msec * ilog(ncpus), units: nanoseconds) * (default: 4 msec * (1 + ilog(ncpus)), units: nanoseconds)
*/ */
unsigned int sysctl_sched_min_granularity = 1000000ULL; unsigned int sysctl_sched_min_granularity = 4000000ULL;
/* /*
* is kept at sysctl_sched_latency / sysctl_sched_min_granularity * is kept at sysctl_sched_latency / sysctl_sched_min_granularity
*/ */
static unsigned int sched_nr_latency = 20; static unsigned int sched_nr_latency = 5;
/* /*
* After fork, child runs first. (default) If set to 0 then * After fork, child runs first. (default) If set to 0 then
...@@ -61,7 +61,7 @@ unsigned int __read_mostly sysctl_sched_compat_yield; ...@@ -61,7 +61,7 @@ unsigned int __read_mostly sysctl_sched_compat_yield;
/* /*
* SCHED_BATCH wake-up granularity. * SCHED_BATCH wake-up granularity.
* (default: 10 msec * ilog(ncpus), units: nanoseconds) * (default: 10 msec * (1 + ilog(ncpus)), units: nanoseconds)
* *
* This option delays the preemption effects of decoupled workloads * This option delays the preemption effects of decoupled workloads
* and reduces their over-scheduling. Synchronous workloads will still * and reduces their over-scheduling. Synchronous workloads will still
...@@ -71,7 +71,7 @@ unsigned int sysctl_sched_batch_wakeup_granularity = 10000000UL; ...@@ -71,7 +71,7 @@ unsigned int sysctl_sched_batch_wakeup_granularity = 10000000UL;
/* /*
* SCHED_OTHER wake-up granularity. * SCHED_OTHER wake-up granularity.
* (default: 10 msec * ilog(ncpus), units: nanoseconds) * (default: 10 msec * (1 + ilog(ncpus)), units: nanoseconds)
* *
* This option delays the preemption effects of decoupled workloads * This option delays the preemption effects of decoupled workloads
* and reduces their over-scheduling. Synchronous workloads will still * and reduces their over-scheduling. Synchronous workloads will still
......
...@@ -337,8 +337,11 @@ struct user_struct * alloc_uid(struct user_namespace *ns, uid_t uid) ...@@ -337,8 +337,11 @@ struct user_struct * alloc_uid(struct user_namespace *ns, uid_t uid)
struct user_struct *new; struct user_struct *new;
new = kmem_cache_alloc(uid_cachep, GFP_KERNEL); new = kmem_cache_alloc(uid_cachep, GFP_KERNEL);
if (!new) if (!new) {
uids_mutex_unlock();
return NULL; return NULL;
}
new->uid = uid; new->uid = uid;
atomic_set(&new->__count, 1); atomic_set(&new->__count, 1);
atomic_set(&new->processes, 0); atomic_set(&new->processes, 0);
...@@ -355,6 +358,7 @@ struct user_struct * alloc_uid(struct user_namespace *ns, uid_t uid) ...@@ -355,6 +358,7 @@ struct user_struct * alloc_uid(struct user_namespace *ns, uid_t uid)
if (alloc_uid_keyring(new, current) < 0) { if (alloc_uid_keyring(new, current) < 0) {
kmem_cache_free(uid_cachep, new); kmem_cache_free(uid_cachep, new);
uids_mutex_unlock();
return NULL; return NULL;
} }
...@@ -362,6 +366,7 @@ struct user_struct * alloc_uid(struct user_namespace *ns, uid_t uid) ...@@ -362,6 +366,7 @@ struct user_struct * alloc_uid(struct user_namespace *ns, uid_t uid)
key_put(new->uid_keyring); key_put(new->uid_keyring);
key_put(new->session_keyring); key_put(new->session_keyring);
kmem_cache_free(uid_cachep, new); kmem_cache_free(uid_cachep, new);
uids_mutex_unlock();
return NULL; return NULL;
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment