Raistlin
619b048803
sched: fix divide error when trying to configure rt_period to zero
Here it is another little Oops we found while configuring invalid values
via cgroups:
echo 0 > /dev/cgroups/0/cpu.rt_period_us
or
echo 4294967296 > /dev/cgroups/0/cpu.rt_period_us
[ 205.509825] divide error: 0000 [#1]
[ 205.510151] Modules linked in:
[ 205.510151]
[ 205.510151] Pid: 2339, comm: bash Not tainted (2.6.26-rc8 #33)
[ 205.510151] EIP: 0060:[<c030c6ef>] EFLAGS: 00000293 CPU: 0
[ 205.510151] EIP is at div64_u64+0x5f/0x70
[ 205.510151] EAX: 0000389f EBX: 00000000 ECX: 00000000 EDX: 00000000
[ 205.510151] ESI: d9800000 EDI: 00000000 EBP: c6cede60 ESP: c6cede50
[ 205.510151] DS: 007b ES: 007b FS: 0000 GS: 0033 SS: 0068
[ 205.510151] Process bash (pid: 2339, ti=c6cec000 task=c79be370 task.ti=c6cec000)
[ 205.510151] Stack: d9800000 0000389f c05971a0 d9800000 c6cedeb4 c0214dbd 00000000 00000000
[ 205.510151] c6cede88 c0242bd8 c05377c0 c7a41b40 00000000 00000000 00000000 c05971a0
[ 205.510151] c780ed20 c7508494 c7a41b40 00000000 00000002 c6cedebc c05971a0 ffffffea
[ 205.510151] Call Trace:
[ 205.510151] [<c0214dbd>] ? __rt_schedulable+0x1cd/0x240
[ 205.510151] [<c0242bd8>] ? cgroup_file_open+0x18/0xe0
[ 205.510151] [<c0214fe4>] ? tg_set_bandwidth+0xa4/0xf0
[ 205.510151] [<c0215066>] ? sched_group_set_rt_period+0x36/0x50
[ 205.510151] [<c021508e>] ? cpu_rt_period_write_uint+0xe/0x10
[ 205.510151] [<c0242dc5>] ? cgroup_file_write+0x125/0x160
[ 205.510151] [<c0232c15>] ? hrtimer_interrupt+0x155/0x190
[ 205.510151] [<c02f047f>] ? security_file_permission+0xf/0x20
[ 205.510151] [<c0277ad8>] ? rw_verify_area+0x48/0xc0
[ 205.510151] [<c0283744>] ? dupfd+0x104/0x130
[ 205.510151] [<c027838c>] ? vfs_write+0x9c/0x160
[ 205.510151] [<c0242ca0>] ? cgroup_file_write+0x0/0x160
[ 205.510151] [<c027850d>] ? sys_write+0x3d/0x70
[ 205.510151] [<c0203019>] ? sysenter_past_esp+0x6a/0x91
[ 205.510151] =======================
[ 205.510151] Code: 0f 45 de 31 f6 0f ad d0 d3 ea f6 c1 20 0f 45 c2 0f 45 d6 89 45 f0 89 55 f4 8b 55 f4 31 c9 8b 45 f0 39 d3 89 c6 77 08 89 d0 31 d2 <f7> f3 89 c1 83 c4 08 89 f0 f7 f3 89 ca 5b 5e 5d c3 55 89 e5 56
[ 205.510151] EIP: [<c030c6ef>] div64_u64+0x5f/0x70 SS:ESP 0068:c6cede50
The attached patch solves the issue for me.
I'm checking as soon as possible for the period not being zero since, if
it is, going ahead is useless. This way we also save a mutex_lock() and
a read_lock() wrt doing it inside tg_set_bandwidth() or
__rt_schedulable().
Signed-off-by: Dario Faggioli <raistlin@linux.it>
Signed-off-by: Michael Trimarchi <trimarchimichael@yahoo.it>
Signed-off-by: Ingo Molnar <mingo@elte.hu>
|
2008-07-01 08:23:24 +02:00 |
| .. |
|
irq
|
genirq: reenable a nobody cared disabled irq when a new driver arrives
|
2008-05-02 13:40:34 +02:00 |
|
power
|
Merge branches 'release', 'acpica', 'bugzilla-10224', 'bugzilla-9772', 'bugzilla-9916', 'ec', 'eeepc', 'idle', 'misc', 'pm-legacy', 'sysfs-links-2.6.26', 'thermal', 'thinkpad' and 'video' into release
|
2008-04-30 13:58:00 -04:00 |
|
time
|
clocksource: allow read access to available/current_clocksource
|
2008-05-03 18:11:48 +02:00 |
|
.gitignore
|
|
|
|
acct.c
|
bsd_acct: using task_struct->tgid is not right in pid-namespaces
|
2008-03-24 19:22:20 -07:00 |
|
audit.c
|
[patch 1/1] audit_send_reply(): fix error-path memory leak
|
2008-05-17 03:30:22 -04:00 |
|
audit.h
|
[PATCH 1/2] audit: move extern declarations to audit.h
|
2008-04-28 06:28:04 -04:00 |
|
audit_tree.c
|
[PATCH] list_for_each_rcu must die: audit
|
2008-05-17 03:30:23 -04:00 |
|
auditfilter.c
|
Merge branch 'audit.b50' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/audit-current
|
2008-04-29 11:41:22 -07:00 |
|
auditsc.c
|
[PATCH] new predicate - AUDIT_FILETYPE
|
2008-04-28 06:28:37 -04:00 |
|
backtracetest.c
|
|
|
|
bounds.c
|
Add kbuild.h that contains common definitions for kbuild users
|
2008-04-29 08:06:29 -07:00 |
|
capability.c
|
capabilities: remain source compatible with 32-bit raw legacy capability support.
|
2008-05-31 16:36:16 -07:00 |
|
cgroup.c
|
cgroups: remove node_ prefix_from ns subsystem
|
2008-05-24 09:56:14 -07:00 |
|
cgroup_debug.c
|
CGroup API files: move "releasable" to cgroup_debug subsystem
|
2008-04-29 08:06:09 -07:00 |
|
compat.c
|
ntp: support for TAI
|
2008-05-01 08:03:59 -07:00 |
|
configs.c
|
kernel: use non-racy method for proc entries creation
|
2008-04-29 08:06:22 -07:00 |
|
cpu.c
|
kernel: replace remaining __FUNCTION__ occurrences
|
2008-04-30 08:29:54 -07:00 |
|
cpuset.c
|
Merge branch 'core-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip
|
2008-06-20 12:37:13 -07:00 |
|
delayacct.c
|
|
|
|
dma.c
|
kernel: use non-racy method for proc entries creation
|
2008-04-29 08:06:22 -07:00 |
|
exec_domain.c
|
|
|
|
exit.c
|
signals: fix sigqueue_free() vs __exit_signal() race
|
2008-05-24 09:56:10 -07:00 |
|
extable.c
|
|
|
|
fork.c
|
[PATCH] dup_fd() fixes, part 1
|
2008-05-16 17:22:26 -04:00 |
|
futex.c
|
futexes: fix fault handling in futex_lock_pi
|
2008-06-23 13:31:15 +02:00 |
|
futex_compat.c
|
futex_compat __user annotation
|
2008-03-30 14:18:41 -07:00 |
|
hrtimer.c
|
hrtimer: remove duplicate helper function
|
2008-05-03 18:11:48 +02:00 |
|
itimer.c
|
|
|
|
kallsyms.c
|
kernel: use non-racy method for proc entries creation
|
2008-04-29 08:06:22 -07:00 |
|
Kconfig.hz
|
|
|
|
Kconfig.preempt
|
rcu: move PREEMPT_RCU config option back under PREEMPT
|
2008-03-10 18:01:20 -07:00 |
|
kexec.c
|
kexec: make extended crashkernel= syntax less confusing
|
2008-05-01 08:04:00 -07:00 |
|
kfifo.c
|
|
|
|
kgdb.c
|
kgdb: sparse fix
|
2008-06-24 10:52:55 -05:00 |
|
kmod.c
|
[PATCH] split linux/file.h
|
2008-05-01 13:08:16 -04:00 |
|
kprobes.c
|
kprobes: fix error checking of batch registration
|
2008-06-12 18:05:40 -07:00 |
|
ksysfs.c
|
|
|
|
kthread.c
|
Deprecate find_task_by_pid()
|
2008-04-30 08:29:48 -07:00 |
|
latencytop.c
|
kernel: use non-racy method for proc entries creation
|
2008-04-29 08:06:22 -07:00 |
|
lockdep.c
|
Subject: lockdep: include all lock classes in all_lock_classes
|
2008-02-25 23:03:02 +01:00 |
|
lockdep_internals.h
|
|
|
|
lockdep_proc.c
|
kernel: use non-racy method for proc entries creation
|
2008-04-29 08:06:22 -07:00 |
|
Makefile
|
sched: add optional support for CONFIG_HAVE_UNSTABLE_SCHED_CLOCK
|
2008-05-05 23:56:18 +02:00 |
|
marker.c
|
make marker_debug static
|
2008-04-30 08:29:49 -07:00 |
|
module.c
|
modules: proper cleanup of kobject without CONFIG_SYSFS
|
2008-05-23 13:09:33 +10:00 |
|
mutex-debug.c
|
|
|
|
mutex-debug.h
|
|
|
|
mutex.c
|
|
|
|
mutex.h
|
|
|
|
notifier.c
|
ipc: re-enable msgmni automatic recomputing msgmni if set to negative
|
2008-04-29 08:06:13 -07:00 |
|
ns_cgroup.c
|
cgroups: kernel/ns_cgroup.c should #include <linux/nsproxy.h>
|
2008-04-29 08:06:07 -07:00 |
|
nsproxy.c
|
ipc: sysvsem: refuse clone(CLONE_SYSVSEM|CLONE_NEWIPC)
|
2008-04-29 08:06:14 -07:00 |
|
panic.c
|
Taint kernel after WARN_ON(condition)
|
2008-04-29 08:05:59 -07:00 |
|
params.c
|
|
|
|
pid.c
|
pids: introduce change_pid() helper
|
2008-04-30 08:29:48 -07:00 |
|
pid_namespace.c
|
pidns: make pid->level and pid_ns->level unsigned
|
2008-04-30 08:29:49 -07:00 |
|
pm_qos_params.c
|
|
|
|
posix-cpu-timers.c
|
remove div_long_long_rem
|
2008-05-01 08:03:58 -07:00 |
|
posix-timers.c
|
signals: join send_sigqueue() with send_group_sigqueue()
|
2008-04-30 08:29:36 -07:00 |
|
printk.c
|
printk: don't read beyond string arguments' terminating zero
|
2008-04-30 08:29:52 -07:00 |
|
profile.c
|
kernel: use non-racy method for proc entries creation
|
2008-04-29 08:06:22 -07:00 |
|
ptrace.c
|
make generic sys_ptrace unconditional
|
2008-05-01 10:21:54 -07:00 |
|
rcuclassic.c
|
|
|
|
rcupdate.c
|
|
|
|
rcupreempt.c
|
rcupreempt: remove export of rcu_batches_completed_bh
|
2008-06-19 09:45:37 +02:00 |
|
rcupreempt_trace.c
|
|
|
|
rcutorture.c
|
kernel: explicitly include required header files under kernel/
|
2008-04-29 08:06:04 -07:00 |
|
relay.c
|
splice: fix sendfile() issue with relay
|
2008-05-28 14:49:27 +02:00 |
|
res_counter.c
|
memcgroup: add the max_usage member on the res_counter
|
2008-04-29 08:06:10 -07:00 |
|
resource.c
|
kernel: use non-racy method for proc entries creation
|
2008-04-29 08:06:22 -07:00 |
|
rtmutex-debug.c
|
|
|
|
rtmutex-debug.h
|
|
|
|
rtmutex-tester.c
|
|
|
|
rtmutex.c
|
|
|
|
rtmutex.h
|
|
|
|
rtmutex_common.h
|
|
|
|
rwsem.c
|
|
|
|
sched.c
|
sched: fix divide error when trying to configure rt_period to zero
|
2008-07-01 08:23:24 +02:00 |
|
sched_clock.c
|
sched: fix sched_clock_cpu()
|
2008-05-29 11:29:19 +02:00 |
|
sched_debug.c
|
revert ("sched: fair-group: SMP-nice for group scheduling")
|
2008-05-29 11:28:57 +02:00 |
|
sched_fair.c
|
sched: stop wake_affine from causing serious imbalance
|
2008-05-29 11:29:20 +02:00 |
|
sched_features.h
|
sched: /debug/sched_features
|
2008-04-19 19:45:00 +02:00 |
|
sched_idletask.c
|
sched: make rt_sched_class, idle_sched_class static
|
2008-05-05 23:56:17 +02:00 |
|
sched_rt.c
|
sched: rt: dont stop the period timer when there are tasks wanting to run
|
2008-06-20 11:00:19 +02:00 |
|
sched_stats.h
|
sched, delay accounting: fix incorrect delay time when constantly waiting on runqueue
|
2008-06-19 14:15:28 +02:00 |
|
seccomp.c
|
|
|
|
semaphore.c
|
Revert "semaphore: fix"
|
2008-05-10 20:43:22 -07:00 |
|
signal.c
|
posix timers: discard SI_TIMER signals on exec
|
2008-05-26 10:37:07 -07:00 |
|
softirq.c
|
Fix cpu hotplug problem in softirq code
|
2008-05-01 08:03:58 -07:00 |
|
softlockup.c
|
softlockup: fix NMI hangs due to lock race - 2.6.26-rc regression
|
2008-06-19 09:45:38 +02:00 |
|
spinlock.c
|
|
|
|
srcu.c
|
|
|
|
stacktrace.c
|
|
|
|
stop_machine.c
|
stop_machine: make stop_machine_run more virtualization friendly
|
2008-05-23 13:09:34 +10:00 |
|
sys.c
|
sys_prctl(): fix return of uninitialized value
|
2008-05-24 09:56:13 -07:00 |
|
sys_ni.c
|
|
|
|
sysctl.c
|
[PATCH] avoid multiplication overflows and signedness issues for max_fds
|
2008-05-16 17:22:52 -04:00 |
|
sysctl_check.c
|
|
|
|
taskstats.c
|
Use find_task_by_vpid in taskstats
|
2008-04-30 08:29:48 -07:00 |
|
test_kprobes.c
|
|
|
|
time.c
|
Make constants in kernel/timeconst.h fixed 64 bits
|
2008-05-02 16:18:42 -07:00 |
|
timeconst.pl
|
Make constants in kernel/timeconst.h fixed 64 bits
|
2008-05-02 16:18:42 -07:00 |
|
timer.c
|
debugobjects: add timer specific object debugging code
|
2008-04-30 08:29:53 -07:00 |
|
tsacct.c
|
|
|
|
uid16.c
|
asmlinkage_protect replaces prevent_tail_call
|
2008-04-10 17:28:26 -07:00 |
|
user.c
|
alloc_uid: cleanup
|
2008-04-30 08:29:53 -07:00 |
|
user_namespace.c
|
eCryptfs: make key module subsystem respect namespaces
|
2008-04-29 08:06:07 -07:00 |
|
utsname.c
|
kernel: explicitly include required header files under kernel/
|
2008-04-29 08:06:04 -07:00 |
|
utsname_sysctl.c
|
|
|
|
wait.c
|
|
|
|
workqueue.c
|
workqueue: remove redundant function invocation
|
2008-05-01 08:04:02 -07:00 |