From ad44541f59444dcfbff66f200b845e20e40a7ddc Mon Sep 17 00:00:00 2001 From: Ingo Molnar Date: Tue, 22 Jan 2008 11:24:58 +0100 Subject: [PATCH] --- yaml --- r: 75631 b: refs/heads/master c: c61935fd0e7f087a643827b4bf5ef646963c10fa h: refs/heads/master i: 75629: 757bd8295bd21fe1cf388e4696a31cdb3c6a5e48 75627: 11aaf4fb63c90607c1e82daf74f562d82f39d6ba 75623: 2b3feeac3cc7ace407da2afb1f30e9e1b8e53de9 75615: 0c4f7c1539a25de5477e66d79b1d99308b3dd67e v: v3 --- [refs] | 2 +- trunk/drivers/w1/slaves/w1_therm.c | 4 ++-- trunk/kernel/rcupdate.c | 2 +- trunk/kernel/sched.c | 8 ++++++++ 4 files changed, 12 insertions(+), 4 deletions(-) diff --git a/[refs] b/[refs] index e98dc3e36a59..ae35734fba2c 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 00e10776ff908a767b3d36a53d330db8fdc53a56 +refs/heads/master: c61935fd0e7f087a643827b4bf5ef646963c10fa diff --git a/trunk/drivers/w1/slaves/w1_therm.c b/trunk/drivers/w1/slaves/w1_therm.c index 112f4ec59035..4318935678c5 100644 --- a/trunk/drivers/w1/slaves/w1_therm.c +++ b/trunk/drivers/w1/slaves/w1_therm.c @@ -112,7 +112,7 @@ static struct w1_therm_family_converter w1_therm_families[] = { static inline int w1_DS18B20_convert_temp(u8 rom[9]) { - s16 t = (rom[1] << 8) | rom[0]; + int t = (rom[1] << 8) | rom[0]; t /= 16; return t; } @@ -204,7 +204,7 @@ static ssize_t w1_therm_read_bin(struct kobject *kobj, crc = w1_calc_crc8(rom, 8); - if (rom[8] == crc) + if (rom[8] == crc && rom[0]) verdict = 1; } } diff --git a/trunk/kernel/rcupdate.c b/trunk/kernel/rcupdate.c index f2c1a04e9b18..a66d4d1615f7 100644 --- a/trunk/kernel/rcupdate.c +++ b/trunk/kernel/rcupdate.c @@ -549,7 +549,7 @@ static void rcu_init_percpu_data(int cpu, struct rcu_ctrlblk *rcp, rdp->blimit = blimit; } -static void __cpuinit rcu_online_cpu(int cpu) +static void __devinit rcu_online_cpu(int cpu) { struct rcu_data *rdp = &per_cpu(rcu_data, cpu); struct rcu_data *bh_rdp = &per_cpu(rcu_bh_data, cpu); diff --git a/trunk/kernel/sched.c b/trunk/kernel/sched.c index 37cf07aa4164..e76b11ca6df3 100644 --- a/trunk/kernel/sched.c +++ b/trunk/kernel/sched.c @@ -7153,6 +7153,14 @@ int sched_group_set_shares(struct task_group *tg, unsigned long shares) { int i; + /* + * A weight of 0 or 1 can cause arithmetics problems. + * (The default weight is 1024 - so there's no practical + * limitation from this.) + */ + if (shares < 2) + shares = 2; + spin_lock(&tg->lock); if (tg->shares == shares) goto done;