From: Greg Kroah-Hartman Date: Mon, 7 Jul 2014 20:04:16 +0000 (-0700) Subject: 3.15-stable patches X-Git-Tag: v3.4.98~36 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=9fdf46cdf5c7deea410cfc887a775353bcc0435d;p=thirdparty%2Fkernel%2Fstable-queue.git 3.15-stable patches added patches: hwmon-ina2xx-cast-to-s16-on-shunt-and-current-regs.patch intel_pstate-correct-rounding-in-busy-calculation.patch mac80211-don-t-check-netdev-state-for-debugfs-read-write.patch mac80211-fix-a-memory-leak-on-sta-rate-selection-table.patch mac80211-fix-ibss-join-by-initializing-last_scan_completed.patch twl4030-madc-request-processed-values-in-twl4030_get_madc_conversion.patch --- diff --git a/queue-3.15/hwmon-ina2xx-cast-to-s16-on-shunt-and-current-regs.patch b/queue-3.15/hwmon-ina2xx-cast-to-s16-on-shunt-and-current-regs.patch new file mode 100644 index 00000000000..cc4736e143f --- /dev/null +++ b/queue-3.15/hwmon-ina2xx-cast-to-s16-on-shunt-and-current-regs.patch @@ -0,0 +1,49 @@ +From c0214f98943b1fe43f7be61b7782b0c8f0836f28 Mon Sep 17 00:00:00 2001 +From: Fabio Baltieri +Date: Sun, 8 Jun 2014 22:06:24 +0100 +Subject: hwmon: (ina2xx) Cast to s16 on shunt and current regs + +From: Fabio Baltieri + +commit c0214f98943b1fe43f7be61b7782b0c8f0836f28 upstream. + +All devices supported by ina2xx are bidirectional and report the +measured shunt voltage and power values as a signed 16 bit, but the +current driver implementation caches all registers as u16, leading +to an incorrect sign extension when reporting to userspace in +ina2xx_get_value(). + +This patch fixes the problem by casting the signed registers to s16. +Tested on an INA219. + +Signed-off-by: Fabio Baltieri +Signed-off-by: Guenter Roeck +Signed-off-by: Greg Kroah-Hartman + +--- + drivers/hwmon/ina2xx.c | 7 ++++--- + 1 file changed, 4 insertions(+), 3 deletions(-) + +--- a/drivers/hwmon/ina2xx.c ++++ b/drivers/hwmon/ina2xx.c +@@ -148,7 +148,8 @@ static int ina2xx_get_value(struct ina2x + + switch (reg) { + case INA2XX_SHUNT_VOLTAGE: +- val = DIV_ROUND_CLOSEST(data->regs[reg], ++ /* signed register */ ++ val = DIV_ROUND_CLOSEST((s16)data->regs[reg], + data->config->shunt_div); + break; + case INA2XX_BUS_VOLTAGE: +@@ -160,8 +161,8 @@ static int ina2xx_get_value(struct ina2x + val = data->regs[reg] * data->config->power_lsb; + break; + case INA2XX_CURRENT: +- /* LSB=1mA (selected). Is in mA */ +- val = data->regs[reg]; ++ /* signed register, LSB=1mA (selected), in mA */ ++ val = (s16)data->regs[reg]; + break; + default: + /* programmer goofed */ diff --git a/queue-3.15/intel_pstate-correct-rounding-in-busy-calculation.patch b/queue-3.15/intel_pstate-correct-rounding-in-busy-calculation.patch new file mode 100644 index 00000000000..9e08490c10f --- /dev/null +++ b/queue-3.15/intel_pstate-correct-rounding-in-busy-calculation.patch @@ -0,0 +1,44 @@ +From 51d211e9c334b9eca3505f4052afa660c3e0606b Mon Sep 17 00:00:00 2001 +From: Doug Smythies +Date: Tue, 17 Jun 2014 13:36:10 -0700 +Subject: intel_pstate: Correct rounding in busy calculation + +From: Doug Smythies + +commit 51d211e9c334b9eca3505f4052afa660c3e0606b upstream. + +There was a mistake in the actual rounding portion this previous patch: +f0fe3cd7e12d (intel_pstate: Correct rounding in busy calculation) such that +the rounding was asymetric and incorrect. + +Severity: Not very serious, but can increase target pstate by one extra value. +For real world work flows the issue should self correct (but I have no proof). +It is the equivalent of different PID gains for positive and negative numbers. + +Examples: + -3.000000 used to round to -4, rounds to -3 with this patch. + -3.503906 used to round to -5, rounds to -4 with this patch. + +Fixes: f0fe3cd7e12d (intel_pstate: Correct rounding in busy calculation) +Signed-off-by: Doug Smythies +Signed-off-by: Rafael J. Wysocki +Signed-off-by: Greg Kroah-Hartman + +--- + drivers/cpufreq/intel_pstate.c | 5 +---- + 1 file changed, 1 insertion(+), 4 deletions(-) + +--- a/drivers/cpufreq/intel_pstate.c ++++ b/drivers/cpufreq/intel_pstate.c +@@ -200,10 +200,7 @@ static signed int pid_calc(struct _pid * + pid->last_err = fp_error; + + result = pterm + mul_fp(pid->integral, pid->i_gain) + dterm; +- if (result >= 0) +- result = result + (1 << (FRAC_BITS-1)); +- else +- result = result - (1 << (FRAC_BITS-1)); ++ result = result + (1 << (FRAC_BITS-1)); + return (signed int)fp_toint(result); + } + diff --git a/queue-3.15/mac80211-don-t-check-netdev-state-for-debugfs-read-write.patch b/queue-3.15/mac80211-don-t-check-netdev-state-for-debugfs-read-write.patch new file mode 100644 index 00000000000..a3bd9d0b62d --- /dev/null +++ b/queue-3.15/mac80211-don-t-check-netdev-state-for-debugfs-read-write.patch @@ -0,0 +1,43 @@ +From 923eaf367206e01f22c97aee22300e332d071916 Mon Sep 17 00:00:00 2001 +From: Arik Nemtsov +Date: Mon, 26 May 2014 14:40:51 +0300 +Subject: mac80211: don't check netdev state for debugfs read/write + +From: Arik Nemtsov + +commit 923eaf367206e01f22c97aee22300e332d071916 upstream. + +Doing so will lead to an oops for a p2p-dev interface, since it has +no netdev. + +Signed-off-by: Arik Nemtsov +Signed-off-by: Emmanuel Grumbach +Signed-off-by: Johannes Berg +Signed-off-by: Greg Kroah-Hartman + +--- + net/mac80211/debugfs_netdev.c | 6 ++---- + 1 file changed, 2 insertions(+), 4 deletions(-) + +--- a/net/mac80211/debugfs_netdev.c ++++ b/net/mac80211/debugfs_netdev.c +@@ -34,8 +34,7 @@ static ssize_t ieee80211_if_read( + ssize_t ret = -EINVAL; + + read_lock(&dev_base_lock); +- if (sdata->dev->reg_state == NETREG_REGISTERED) +- ret = (*format)(sdata, buf, sizeof(buf)); ++ ret = (*format)(sdata, buf, sizeof(buf)); + read_unlock(&dev_base_lock); + + if (ret >= 0) +@@ -62,8 +61,7 @@ static ssize_t ieee80211_if_write( + + ret = -ENODEV; + rtnl_lock(); +- if (sdata->dev->reg_state == NETREG_REGISTERED) +- ret = (*write)(sdata, buf, count); ++ ret = (*write)(sdata, buf, count); + rtnl_unlock(); + + return ret; diff --git a/queue-3.15/mac80211-fix-a-memory-leak-on-sta-rate-selection-table.patch b/queue-3.15/mac80211-fix-a-memory-leak-on-sta-rate-selection-table.patch new file mode 100644 index 00000000000..432c9556db9 --- /dev/null +++ b/queue-3.15/mac80211-fix-a-memory-leak-on-sta-rate-selection-table.patch @@ -0,0 +1,36 @@ +From 53d045258ee2e38b1e882617cb0799a04d05f5fa Mon Sep 17 00:00:00 2001 +From: Felix Fietkau +Date: Tue, 27 May 2014 22:33:57 +0200 +Subject: mac80211: fix a memory leak on sta rate selection table +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +From: Felix Fietkau + +commit 53d045258ee2e38b1e882617cb0799a04d05f5fa upstream. + +If the rate control algorithm uses a selection table, it +is leaked when the station is destroyed - fix that. + +Signed-off-by: Felix Fietkau +Reported-by: Christophe Prévotaux +Fixes: 0d528d85c519 ("mac80211: improve the rate control API") +[add commit log entry, remove pointless NULL check] +Signed-off-by: Johannes Berg +Signed-off-by: Greg Kroah-Hartman + +--- + net/mac80211/sta_info.c | 1 + + 1 file changed, 1 insertion(+) + +--- a/net/mac80211/sta_info.c ++++ b/net/mac80211/sta_info.c +@@ -240,6 +240,7 @@ void sta_info_free(struct ieee80211_loca + + sta_dbg(sta->sdata, "Destroyed STA %pM\n", sta->sta.addr); + ++ kfree(rcu_dereference_raw(sta->sta.rates)); + kfree(sta); + } + diff --git a/queue-3.15/mac80211-fix-ibss-join-by-initializing-last_scan_completed.patch b/queue-3.15/mac80211-fix-ibss-join-by-initializing-last_scan_completed.patch new file mode 100644 index 00000000000..a92fc9d0775 --- /dev/null +++ b/queue-3.15/mac80211-fix-ibss-join-by-initializing-last_scan_completed.patch @@ -0,0 +1,35 @@ +From c7d37a66e345df2fdf1aa7b2c9a6d3d53846ca5b Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Krzysztof=20Ha=C5=82asa?= +Date: Mon, 26 May 2014 14:14:46 +0200 +Subject: mac80211: fix IBSS join by initializing last_scan_completed +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +From: =?UTF-8?q?Krzysztof=20Ha=C5=82asa?= + +commit c7d37a66e345df2fdf1aa7b2c9a6d3d53846ca5b upstream. + +Without this fix, freshly rebooted Linux creates a new IBSS +instead of joining an existing one. Only when jiffies counter +overflows after 5 minutes the IBSS can be successfully joined. + +Signed-off-by: Krzysztof Hałasa +[edit commit message slightly] +Signed-off-by: Johannes Berg +Signed-off-by: Greg Kroah-Hartman + +--- + net/mac80211/ibss.c | 1 + + 1 file changed, 1 insertion(+) + +--- a/net/mac80211/ibss.c ++++ b/net/mac80211/ibss.c +@@ -1648,6 +1648,7 @@ int ieee80211_ibss_join(struct ieee80211 + sdata->u.ibss.control_port = params->control_port; + sdata->u.ibss.userspace_handles_dfs = params->userspace_handles_dfs; + sdata->u.ibss.basic_rates = params->basic_rates; ++ sdata->u.ibss.last_scan_completed = jiffies; + + /* fix basic_rates if channel does not support these rates */ + rate_flags = ieee80211_chandef_rate_flags(¶ms->chandef); diff --git a/queue-3.15/series b/queue-3.15/series index 480b606ff69..fdbad80049a 100644 --- a/queue-3.15/series +++ b/queue-3.15/series @@ -64,3 +64,9 @@ dm-era-check-for-a-non-null-metadata-object-before-closing-it.patch dm-thin-update-discard_granularity-to-reflect-the-thin-pool-blocksize.patch rbd-use-reference-counts-for-image-requests.patch rbd-handle-parent_overlap-on-writes-correctly.patch +hwmon-ina2xx-cast-to-s16-on-shunt-and-current-regs.patch +intel_pstate-correct-rounding-in-busy-calculation.patch +twl4030-madc-request-processed-values-in-twl4030_get_madc_conversion.patch +mac80211-fix-ibss-join-by-initializing-last_scan_completed.patch +mac80211-don-t-check-netdev-state-for-debugfs-read-write.patch +mac80211-fix-a-memory-leak-on-sta-rate-selection-table.patch diff --git a/queue-3.15/twl4030-madc-request-processed-values-in-twl4030_get_madc_conversion.patch b/queue-3.15/twl4030-madc-request-processed-values-in-twl4030_get_madc_conversion.patch new file mode 100644 index 00000000000..9ca220831e8 --- /dev/null +++ b/queue-3.15/twl4030-madc-request-processed-values-in-twl4030_get_madc_conversion.patch @@ -0,0 +1,33 @@ +From e0326be0cded13dfc3a24cbeece1f1ae64348a0e Mon Sep 17 00:00:00 2001 +From: Paul Kocialkowski +Date: Sat, 24 May 2014 13:09:00 +0100 +Subject: twl4030-madc: Request processed values in twl4030_get_madc_conversion + +From: Paul Kocialkowski + +commit e0326be0cded13dfc3a24cbeece1f1ae64348a0e upstream. + +Not setting the raw parameter in the request causes it to be randomly +initialized to a value that might be different from zero or zero. This leads to +values that are randomly either raw or processed, making it very difficult to +make reliable use of the values. + +Signed-off-by: Paul Kocialkowski +Acked-by: Sebastian Reichel +Signed-off-by: Jonathan Cameron +Signed-off-by: Greg Kroah-Hartman + +--- + drivers/iio/adc/twl4030-madc.c | 1 + + 1 file changed, 1 insertion(+) + +--- a/drivers/iio/adc/twl4030-madc.c ++++ b/drivers/iio/adc/twl4030-madc.c +@@ -645,6 +645,7 @@ int twl4030_get_madc_conversion(int chan + req.channels = (1 << channel_no); + req.method = TWL4030_MADC_SW2; + req.active = 0; ++ req.raw = 0; + req.func_cb = NULL; + ret = twl4030_madc_conversion(&req); + if (ret < 0)