3.14.38-stable review
Subsystems (3)
Greg Kroah-Hartman
maintainercover 3.14.38-stable review
This is the start of the stable review cycle for the 3.14.38 release. There are 38 patches in this series, all will be posted as a response to this one. If anyone has any issues with these being applied, please let me know.
Responses should be made by Sun Apr 12 13:16:19 UTC 2015. Anything received after that time might be too late.
The whole patch series can be found in one patch at:
kernel.org/pub/linux/kernel/v3.0/stable-review/patch-3.14.38-rc1.gz
and the diffstat can be found below.
thanks,
greg k-h
-------------
Pseudo-Shortlog of commits:
Greg Kroah-Hartman <[email protected]>
Linux 3.14.38-rc1
Ameya Palande <[email protected]>
mfd: kempld-core: Fix callback return value check
Markos Chandras <[email protected]>
net: ethernet: pcnet32: Setup the SRAM and NOUFLO on Am79C97{3, 5}Scott Wood <[email protected]>
powerpc/mpc85xx: Add ranges to etsec2 nodes
Tyrel Datwyler <[email protected]>
powerpc/pseries: Little endian fixes for post mobility device tree update
Catalin Marinas <[email protected]>
arm64: Use the reserved TTBR0 if context switching to the init_mm
Mahesh Salgaonkar <[email protected]>
powerpc/book3s: Fix the MCE code to use CONFIG_KVM_BOOK3S_64_HANDLER
Sergei Antonov <[email protected]>
hfsplus: fix B-tree corruption after insertion at position 0
Uwe Kleine-König <[email protected]>
spi: trigger trace event for message-done before mesg->complete
Darrick J. Wong <[email protected]>
dm io: deal with wandering queue limits when handling REQ_DISCARD and REQ_WRITE_SAME
Mikulas Patocka <[email protected]>
dm: hold suspend_lock while suspending device during device deletion
Andy Shevchenko <[email protected]>
dmaengine: dw: append MODULE_ALIAS for platform driver
Malcolm Priestley <[email protected]>
vt6655: RFbSetPower fix missing rate RATE_12M
Malcolm Priestley <[email protected]>
staging: vt6656: vnt_rf_setpower: fix missing rate RATE_12M
Peter Zijlstra <[email protected]>
perf: Fix irq_work 'tail' recursion
Laurent Pinchart <[email protected]>
of/irq: Fix of_irq_parse_one() returned error codes
Thierry Reding <[email protected]>
phy: Find the right match in devm_phy_destroy()
Greg Kroah-Hartman <[email protected]>
Revert "iwlwifi: mvm: fix failure path when power_update fails in add_interface"
Bob Copeland <[email protected]>
mac80211: drop unencrypted frames in mesh fwding
Michal Kazior <[email protected]>
mac80211: disable u-APSD queues by default
Johannes Berg <[email protected]>
nl80211: ignore HT/VHT capabilities without QoS/WMM
Bart Van Assche <[email protected]>
tcm_qla2xxx: Fix incorrect use of __transport_register_session
Dan Carpenter <[email protected]>
tcm_fc: missing curly braces in ft_invl_hw_context()
Yongbae Park <[email protected]>
clocksource: efm32: Fix a NULL pointer dereference
Lars-Peter Clausen <[email protected]>
regmap: regcache-rbtree: Fix present bitmap resize
Yongbae Park <[email protected]>
clockevents: sun5i: Fix setup_irq init sequence
Lars-Peter Clausen <[email protected]>
ASoC: jz4740: Remove Makefile entry for removed file
Takashi Iwai <[email protected]>
ASoC: wm8955: Fix wrong value references for boolean kctl
Takashi Iwai <[email protected]>
ASoC: adav80x: Fix wrong value references for boolean kctl
Takashi Iwai <[email protected]>
ASoC: ak4641: Fix wrong value references for boolean kctl
Takashi Iwai <[email protected]>
ASoC: wm8904: Fix wrong value references for boolean kctl
Takashi Iwai <[email protected]>
ASoC: wm8903: Fix wrong value references for boolean kctl
Takashi Iwai <[email protected]>
ASoC: wm2000: Fix wrong value references for boolean kctl
Takashi Iwai <[email protected]>
ASoC: wm8731: Fix wrong value references for boolean kctl
Takashi Iwai <[email protected]>
ASoC: tas5086: Fix wrong value references for boolean kctl
Takashi Iwai <[email protected]>
ASoC: wm8960: Fix wrong value references for boolean kctl
Takashi Iwai <[email protected]>
ASoC: cs4271: Fix wrong value references for boolean kctl
Takashi Iwai <[email protected]>
ASoC: pcm1681: Fix wrong value references for boolean kctl
Eric Nelson <[email protected]>
ASoC: sgtl5000: remove useless register write clearing CHRGPUMP_POWERUP
-------------
Diffstat:
Makefile | 4 +-- arch/arm64/include/asm/mmu_context.h | 9 ++++++ arch/powerpc/boot/dts/fsl/pq3-etsec2-0.dtsi | 1 + arch/powerpc/boot/dts/fsl/pq3-etsec2-1.dtsi | 1 + arch/powerpc/boot/dts/fsl/pq3-etsec2-2.dtsi | 1 + arch/powerpc/kernel/exceptions-64s.S | 2 +- arch/powerpc/platforms/pseries/mobility.c | 44 +++++++++++++++-------------- drivers/base/regmap/regcache-rbtree.c | 2 +- drivers/clocksource/time-efm32.c | 4 +-- drivers/clocksource/timer-sun5i.c | 8 +++--- drivers/dma/dw/platform.c | 5 +++- drivers/md/dm-io.c | 15 +++++++--- drivers/md/dm.c | 6 ++++ drivers/mfd/kempld-core.c | 2 +- drivers/net/ethernet/amd/pcnet32.c | 31 ++++++++++++++++++-- drivers/net/wireless/iwlwifi/mvm/mac80211.c | 2 +- drivers/of/irq.c | 10 +++++-- drivers/phy/phy-core.c | 4 ++- drivers/scsi/qla2xxx/tcm_qla2xxx.c | 2 +- drivers/spi/spi.c | 5 ++-- drivers/staging/vt6655/rf.c | 1 + drivers/staging/vt6656/rf.c | 1 + drivers/target/tcm_fc/tfc_io.c | 3 +- fs/hfsplus/brec.c | 20 +++++++------ kernel/events/core.c | 10 +++++++ net/mac80211/ieee80211_i.h | 23 +++++++++++---- net/mac80211/rx.c | 3 ++ net/wireless/nl80211.c | 10 +++++++ sound/soc/codecs/adav80x.c | 4 +-- sound/soc/codecs/ak4641.c | 4 +-- sound/soc/codecs/cs4271.c | 4 +-- sound/soc/codecs/pcm1681.c | 4 +-- sound/soc/codecs/sgtl5000.c | 8 +----- sound/soc/codecs/tas5086.c | 4 +-- sound/soc/codecs/wm2000.c | 8 +++--- sound/soc/codecs/wm8731.c | 4 +-- sound/soc/codecs/wm8903.c | 4 +-- sound/soc/codecs/wm8904.c | 4 +-- sound/soc/codecs/wm8955.c | 4 +-- sound/soc/codecs/wm8960.c | 4 +-- sound/soc/jz4740/Makefile | 2 -- 41 files changed, 191 insertions(+), 96 deletions(-)
Greg Kroah-Hartman
maintainerPATCH 1/38 ASoC: sgtl5000: remove useless register write clearing CHRGPUMP_POWERUP
3.14-stable review patch. If anyone has any objections, please let me know.
------------------
From: Eric Nelson <[email protected]>
commit c7d910b87d3c8e9fcf4077089ca4327c12eee099 upstream.
The SGTL5000_CHIP_ANA_POWER register is cached. Update the cached value instead of writing it directly.
Patch inspired by Russell King's more colorful remarks in this patch:
https://github.com/SolidRun/linux-imx6-3.14/commit/dd4bf6a
--- sound/soc/codecs/sgtl5000.c | 8 +------- 1 file changed, 1 insertion(+), 7 deletions(-)
sound/soc/codecs/sgtl5000.c +1 -7
@@ -1198,13 +1198,7 @@ static int sgtl5000_set_power_regs(struc/* Enable VDDC charge pump */ ana_pwr |=SGTL5000_VDDC_CHRGPMP_POWERUP ; }else if (vddio >=3100 && vdda >=3100 ) { -/* -* if vddio and vddd > 3.1v, -* charge pump should be clean before set ana_pwr -*/ -snd_soc_update_bits (codec,SGTL5000_CHIP_ANA_POWER , -SGTL5000_VDDC_CHRGPMP_POWERUP ,0 ); - + ana_pwr &= ~SGTL5000_VDDC_CHRGPMP_POWERUP ;/* VDDC use VDDIO rail */ lreg_ctrl |=SGTL5000_VDDC_ASSN_OVRD ; lreg_ctrl |= SGTL5000_VDDC_MAN_ASSN_VDDIO <<
Greg Kroah-Hartman
maintainerPATCH 2/38 ASoC: pcm1681: Fix wrong value references for boolean kctl
In reply to Greg Kroah-Hartman3.14-stable review patch. If anyone has any objections, please let me know.
------------------
From: Takashi Iwai <[email protected]>
commit d7f58db49d9ad92bdb12d21fdc2308b76bc2ed38 upstream.
The correct values referred by a boolean control are value.integer.value[], not value.enumerated.item[].
The former is long while the latter is int, so it's even incompatible on 64bit architectures.
--- sound/soc/codecs/pcm1681.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-)
sound/soc/codecs/pcm1681.c +2 -2
@@ -118,7 +118,7 @@ static int pcm1681_get_deemph(struct sndstruct snd_soc_codec *codec =snd_kcontrol_chip (kcontrol);struct pcm1681_private *priv =snd_soc_codec_get_drvdata (codec); - ucontrol->value.enumerated.item[0 ] = priv->deemph; + ucontrol->value.integer.value[0 ] = priv->deemph;return 0 ; }
@@ -129,7 +129,7 @@ static int pcm1681_put_deemph(struct sndstruct snd_soc_codec *codec =snd_kcontrol_chip (kcontrol);struct pcm1681_private *priv =snd_soc_codec_get_drvdata (codec); - priv->deemph = ucontrol->value.enumerated.item[0 ]; + priv->deemph = ucontrol->value.integer.value[0 ];return pcm1681_set_deemph (codec); }
Greg Kroah-Hartman
maintainerPATCH 3/38 ASoC: cs4271: Fix wrong value references for boolean kctl
In reply to Greg Kroah-Hartman3.14-stable review patch. If anyone has any objections, please let me know.
------------------
From: Takashi Iwai <[email protected]>
commit e8371aa0fecb73fb8a4b2e0296b025b11e7d6229 upstream.
The correct values referred by a boolean control are value.integer.value[], not value.enumerated.item[].
The former is long while the latter is int, so it's even incompatible on 64bit architectures.
--- sound/soc/codecs/cs4271.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-)
sound/soc/codecs/cs4271.c +2 -2
@@ -288,7 +288,7 @@ static int cs4271_get_deemph(struct snd_struct snd_soc_codec *codec =snd_kcontrol_chip (kcontrol);struct cs4271_private *cs4271 =snd_soc_codec_get_drvdata (codec); - ucontrol->value.enumerated.item[0 ] = cs4271->deemph; + ucontrol->value.integer.value[0 ] = cs4271->deemph;return 0 ; }
@@ -298,7 +298,7 @@ static int cs4271_put_deemph(struct snd_struct snd_soc_codec *codec =snd_kcontrol_chip (kcontrol);struct cs4271_private *cs4271 =snd_soc_codec_get_drvdata (codec); - cs4271->deemph = ucontrol->value.enumerated.item[0 ]; + cs4271->deemph = ucontrol->value.integer.value[0 ];return cs4271_set_deemph (codec); }
Greg Kroah-Hartman
maintainerPATCH 4/38 ASoC: wm8960: Fix wrong value references for boolean kctl
In reply to Greg Kroah-Hartman3.14-stable review patch. If anyone has any objections, please let me know.
------------------
From: Takashi Iwai <[email protected]>
commit b4a18c8b1af15ebfa9054a3d2aef7b0a7e6f2a05 upstream.
The correct values referred by a boolean control are value.integer.value[], not value.enumerated.item[].
The former is long while the latter is int, so it's even incompatible on 64bit architectures.
--- sound/soc/codecs/wm8960.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-)
sound/soc/codecs/wm8960.c +2 -2
@@ -181,7 +181,7 @@ static int wm8960_get_deemph(struct snd_struct snd_soc_codec *codec =snd_kcontrol_chip (kcontrol);struct wm8960_priv *wm8960 =snd_soc_codec_get_drvdata (codec); - ucontrol->value.enumerated.item[0 ] = wm8960->deemph; + ucontrol->value.integer.value[0 ] = wm8960->deemph;return 0 ; }
@@ -190,7 +190,7 @@ static int wm8960_put_deemph(struct snd_ {struct snd_soc_codec *codec =snd_kcontrol_chip (kcontrol);struct wm8960_priv *wm8960 =snd_soc_codec_get_drvdata (codec); -int deemph = ucontrol->value.enumerated.item[0 ]; +int deemph = ucontrol->value.integer.value[0 ];if (deemph >1 )return -EINVAL ;
Greg Kroah-Hartman
maintainerPATCH 5/38 ASoC: tas5086: Fix wrong value references for boolean kctl
In reply to Greg Kroah-Hartman3.14-stable review patch. If anyone has any objections, please let me know.
------------------
From: Takashi Iwai <[email protected]>
commit 4c523ef61160b7d478371ddc9f48c8ce0a00d675 upstream.
The correct values referred by a boolean control are value.integer.value[], not value.enumerated.item[].
The former is long while the latter is int, so it's even incompatible on 64bit architectures.
--- sound/soc/codecs/tas5086.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-)
sound/soc/codecs/tas5086.c +2 -2
@@ -275,7 +275,7 @@ static int tas5086_get_deemph(struct sndstruct snd_soc_codec *codec =snd_kcontrol_chip (kcontrol);struct tas5086_private *priv =snd_soc_codec_get_drvdata (codec); - ucontrol->value.enumerated.item[0 ] = priv->deemph; + ucontrol->value.integer.value[0 ] = priv->deemph;return 0 ; }
@@ -286,7 +286,7 @@ static int tas5086_put_deemph(struct sndstruct snd_soc_codec *codec =snd_kcontrol_chip (kcontrol);struct tas5086_private *priv =snd_soc_codec_get_drvdata (codec); - priv->deemph = ucontrol->value.enumerated.item[0 ]; + priv->deemph = ucontrol->value.integer.value[0 ];return tas5086_set_deemph (codec); }
Greg Kroah-Hartman
maintainerPATCH 6/38 ASoC: wm8731: Fix wrong value references for boolean kctl
In reply to Greg Kroah-Hartman3.14-stable review patch. If anyone has any objections, please let me know.
------------------
From: Takashi Iwai <[email protected]>
commit bd14016fbf31aa199026f1e2358eab695f374eb1 upstream.
The correct values referred by a boolean control are value.integer.value[], not value.enumerated.item[].
The former is long while the latter is int, so it's even incompatible on 64bit architectures.
--- sound/soc/codecs/wm8731.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-)
sound/soc/codecs/wm8731.c +2 -2
@@ -122,7 +122,7 @@ static int wm8731_get_deemph(struct snd_struct snd_soc_codec *codec =snd_kcontrol_chip (kcontrol);struct wm8731_priv *wm8731 =snd_soc_codec_get_drvdata (codec); - ucontrol->value.enumerated.item[0 ] = wm8731->deemph; + ucontrol->value.integer.value[0 ] = wm8731->deemph;return 0 ; }
@@ -132,7 +132,7 @@ static int wm8731_put_deemph(struct snd_ {struct snd_soc_codec *codec =snd_kcontrol_chip (kcontrol);struct wm8731_priv *wm8731 =snd_soc_codec_get_drvdata (codec); -int deemph = ucontrol->value.enumerated.item[0 ]; +int deemph = ucontrol->value.integer.value[0 ];int ret =0 ;if (deemph >1 )
Greg Kroah-Hartman
maintainerPATCH 7/38 ASoC: wm2000: Fix wrong value references for boolean kctl
In reply to Greg Kroah-Hartman3.14-stable review patch. If anyone has any objections, please let me know.
------------------
From: Takashi Iwai <[email protected]>
commit 00a14c2968e3d55817e0fa35c78106ca840537bf upstream.
The correct values referred by a boolean control are value.integer.value[], not value.enumerated.item[].
The former is long while the latter is int, so it's even incompatible on 64bit architectures.
--- sound/soc/codecs/wm2000.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-)
sound/soc/codecs/wm2000.c +4 -4
@@ -610,7 +610,7 @@ static int wm2000_anc_mode_get(struct snstruct snd_soc_codec *codec =snd_kcontrol_chip (kcontrol);struct wm2000_priv *wm2000 =dev_get_drvdata (codec->dev); - ucontrol->value.enumerated.item[0 ] = wm2000->anc_active; + ucontrol->value.integer.value[0 ] = wm2000->anc_active;return 0 ; }
@@ -620,7 +620,7 @@ static int wm2000_anc_mode_put(struct sn {struct snd_soc_codec *codec =snd_kcontrol_chip (kcontrol);struct wm2000_priv *wm2000 =dev_get_drvdata (codec->dev); -int anc_active = ucontrol->value.enumerated.item[0 ]; +int anc_active = ucontrol->value.integer.value[0 ];int ret;if (anc_active >1 )
@@ -643,7 +643,7 @@ static int wm2000_speaker_get(struct sndstruct snd_soc_codec *codec =snd_kcontrol_chip (kcontrol);struct wm2000_priv *wm2000 =dev_get_drvdata (codec->dev); - ucontrol->value.enumerated.item[0 ] = wm2000->spk_ena; + ucontrol->value.integer.value[0 ] = wm2000->spk_ena;return 0 ; }
@@ -653,7 +653,7 @@ static int wm2000_speaker_put(struct snd {struct snd_soc_codec *codec =snd_kcontrol_chip (kcontrol);struct wm2000_priv *wm2000 =dev_get_drvdata (codec->dev); -int val = ucontrol->value.enumerated.item[0 ]; +int val = ucontrol->value.integer.value[0 ];int ret;if (val >1 )
Greg Kroah-Hartman
maintainerPATCH 8/38 ASoC: wm8903: Fix wrong value references for boolean kctl
In reply to Greg Kroah-Hartman3.14-stable review patch. If anyone has any objections, please let me know.
------------------
From: Takashi Iwai <[email protected]>
commit 24cc883c1fd16df34211ae41624aa6d3cd906693 upstream.
The correct values referred by a boolean control are value.integer.value[], not value.enumerated.item[].
The former is long while the latter is int, so it's even incompatible on 64bit architectures.
--- sound/soc/codecs/wm8903.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-)
sound/soc/codecs/wm8903.c +2 -2
@@ -442,7 +442,7 @@ static int wm8903_get_deemph(struct snd_struct snd_soc_codec *codec =snd_kcontrol_chip (kcontrol);struct wm8903_priv *wm8903 =snd_soc_codec_get_drvdata (codec); - ucontrol->value.enumerated.item[0 ] = wm8903->deemph; + ucontrol->value.integer.value[0 ] = wm8903->deemph;return 0 ; }
@@ -452,7 +452,7 @@ static int wm8903_put_deemph(struct snd_ {struct snd_soc_codec *codec =snd_kcontrol_chip (kcontrol);struct wm8903_priv *wm8903 =snd_soc_codec_get_drvdata (codec); -int deemph = ucontrol->value.enumerated.item[0 ]; +int deemph = ucontrol->value.integer.value[0 ];int ret =0 ;if (deemph >1 )
Greg Kroah-Hartman
maintainerPATCH 9/38 ASoC: wm8904: Fix wrong value references for boolean kctl
In reply to Greg Kroah-Hartman3.14-stable review patch. If anyone has any objections, please let me know.
------------------
From: Takashi Iwai <[email protected]>
commit eaddf6fd959074f6a6e71deffe079c71eef35da6 upstream.
The correct values referred by a boolean control are value.integer.value[], not value.enumerated.item[].
The former is long while the latter is int, so it's even incompatible on 64bit architectures.
--- sound/soc/codecs/wm8904.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-)
sound/soc/codecs/wm8904.c +2 -2
@@ -523,7 +523,7 @@ static int wm8904_get_deemph(struct snd_struct snd_soc_codec *codec =snd_kcontrol_chip (kcontrol);struct wm8904_priv *wm8904 =snd_soc_codec_get_drvdata (codec); - ucontrol->value.enumerated.item[0 ] = wm8904->deemph; + ucontrol->value.integer.value[0 ] = wm8904->deemph;return 0 ; }
@@ -532,7 +532,7 @@ static int wm8904_put_deemph(struct snd_ {struct snd_soc_codec *codec =snd_kcontrol_chip (kcontrol);struct wm8904_priv *wm8904 =snd_soc_codec_get_drvdata (codec); -int deemph = ucontrol->value.enumerated.item[0 ]; +int deemph = ucontrol->value.integer.value[0 ];if (deemph >1 )return -EINVAL ;
Greg Kroah-Hartman
maintainerPATCH 10/38 ASoC: ak4641: Fix wrong value references for boolean kctl
In reply to Greg Kroah-Hartman3.14-stable review patch. If anyone has any objections, please let me know.
------------------
From: Takashi Iwai <[email protected]>
commit 08641d9b7bf915144a57a736b42642e13eb1167f upstream.
The correct values referred by a boolean control are value.integer.value[], not value.enumerated.item[].
The former is long while the latter is int, so it's even incompatible on 64bit architectures.
--- sound/soc/codecs/ak4641.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-)
sound/soc/codecs/ak4641.c +2 -2
@@ -76,7 +76,7 @@ static int ak4641_put_deemph(struct snd_ {struct snd_soc_codec *codec =snd_kcontrol_chip (kcontrol);struct ak4641_priv *ak4641 =snd_soc_codec_get_drvdata (codec); -int deemph = ucontrol->value.enumerated.item[0 ]; +int deemph = ucontrol->value.integer.value[0 ];if (deemph >1 )return -EINVAL ;
@@ -92,7 +92,7 @@ static int ak4641_get_deemph(struct snd_struct snd_soc_codec *codec =snd_kcontrol_chip (kcontrol);struct ak4641_priv *ak4641 =snd_soc_codec_get_drvdata (codec); - ucontrol->value.enumerated.item[0 ] = ak4641->deemph; + ucontrol->value.integer.value[0 ] = ak4641->deemph;return 0 ; };
Greg Kroah-Hartman
maintainerPATCH 11/38 ASoC: adav80x: Fix wrong value references for boolean kctl
In reply to Greg Kroah-Hartman3.14-stable review patch. If anyone has any objections, please let me know.
------------------
From: Takashi Iwai <[email protected]>
commit 2bf4c1d483d911cda5dd385527194d23e5cea73d upstream.
The correct values referred by a boolean control are value.integer.value[], not value.enumerated.item[].
The former is long while the latter is int, so it's even incompatible on 64bit architectures.
--- sound/soc/codecs/adav80x.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-)
sound/soc/codecs/adav80x.c +2 -2
@@ -319,7 +319,7 @@ static int adav80x_put_deemph(struct snd {struct snd_soc_codec *codec =snd_kcontrol_chip (kcontrol);struct adav80x *adav80x =snd_soc_codec_get_drvdata (codec); -unsigned int deemph = ucontrol->value.enumerated.item[0 ]; +unsigned int deemph = ucontrol->value.integer.value[0 ];if (deemph >1 )return -EINVAL ;
@@ -335,7 +335,7 @@ static int adav80x_get_deemph(struct sndstruct snd_soc_codec *codec =snd_kcontrol_chip (kcontrol);struct adav80x *adav80x =snd_soc_codec_get_drvdata (codec); - ucontrol->value.enumerated.item[0 ] = adav80x->deemph; + ucontrol->value.integer.value[0 ] = adav80x->deemph;return 0 ; };
Greg Kroah-Hartman
maintainerPATCH 12/38 ASoC: wm8955: Fix wrong value references for boolean kctl
In reply to Greg Kroah-Hartman3.14-stable review patch. If anyone has any objections, please let me know.
------------------
From: Takashi Iwai <[email protected]>
commit 07892b10356f17717abdc578acbef72db86c880e upstream.
The correct values referred by a boolean control are value.integer.value[], not value.enumerated.item[].
The former is long while the latter is int, so it's even incompatible on 64bit architectures.
--- sound/soc/codecs/wm8955.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-)
sound/soc/codecs/wm8955.c +2 -2
@@ -393,7 +393,7 @@ static int wm8955_get_deemph(struct snd_struct snd_soc_codec *codec =snd_kcontrol_chip (kcontrol);struct wm8955_priv *wm8955 =snd_soc_codec_get_drvdata (codec); - ucontrol->value.enumerated.item[0 ] = wm8955->deemph; + ucontrol->value.integer.value[0 ] = wm8955->deemph;return 0 ; }
@@ -402,7 +402,7 @@ static int wm8955_put_deemph(struct snd_ {struct snd_soc_codec *codec =snd_kcontrol_chip (kcontrol);struct wm8955_priv *wm8955 =snd_soc_codec_get_drvdata (codec); -int deemph = ucontrol->value.enumerated.item[0 ]; +int deemph = ucontrol->value.integer.value[0 ];if (deemph >1 )return -EINVAL ;
Greg Kroah-Hartman
maintainerPATCH 13/38 ASoC: jz4740: Remove Makefile entry for removed file
In reply to Greg Kroah-Hartman3.14-stable review patch. If anyone has any objections, please let me know.
------------------
From: Lars-Peter Clausen <[email protected]>
commit eebdec044e82a4c694b7c1f4996e3ab82d64482c upstream.
Commit 0406a40a0 ("ASoC: jz4740: Use the generic dmaengine PCM driver") jz4740-pcm.c file, but neglected to remove the Makefile entries.
--- sound/soc/jz4740/Makefile | 2 -- 1 file changed, 2 deletions(-)
sound/soc/jz4740/Makefile +0 -2
@@ -1,10 +1,8 @@ # # Jz4740 Platform Support # -snd-soc-jz4740-objs := jz4740-pcm.o snd-soc-jz4740-i2s-objs := jz4740-i2s.o -obj-$(CONFIG_SND_JZ4740_SOC) += snd-soc-jz4740.o obj-$(CONFIG_SND_JZ4740_SOC_I2S) += snd-soc-jz4740-i2s.o # Jz4740 Machine Support
Greg Kroah-Hartman
maintainerPATCH 14/38 clockevents: sun5i: Fix setup_irq init sequence
In reply to Greg Kroah-Hartman3.14-stable review patch. If anyone has any objections, please let me know.
------------------
From: Yongbae Park <[email protected]>
commit 1096be084ac59927158ce80ff1d31c33eed0e565 upstream.
The interrupt is enabled before the handler is set. Even this bug did not appear, it is potentially dangerous as it can lead to a NULL pointer dereference.
Fix the error by enabling the interrupt afterclockevents_config_and_register() is called.
--- drivers/clocksource/timer-sun5i.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-)
drivers/clocksource/timer-sun5i.c +4 -4
@@ -172,10 +172,6 @@ static void __init sun5i_timer_init(stru ticks_per_jiffy =DIV_ROUND_UP (rate,HZ ); - ret =setup_irq (irq, &sun5i_timer_irq); -if (ret) -pr_warn ("failed to setup irq %d\n" , irq); -/* Enable timer0 interrupt */ val =readl (timer_base +TIMER_IRQ_EN_REG );writel (val |TIMER_IRQ_EN (0 ), timer_base +TIMER_IRQ_EN_REG );
@@ -185,6 +181,10 @@ static void __init sun5i_timer_init(struclockevents_config_and_register (&sun5i_clockevent, rate,TIMER_SYNC_TICKS ,0xffffffff ); + + ret =setup_irq (irq, &sun5i_timer_irq); +if (ret) +pr_warn ("failed to setup irq %d\n" , irq); }CLOCKSOURCE_OF_DECLARE (sun5i_a13,"allwinner,sun5i-a13-hstimer" , sun5i_timer_init);
Greg Kroah-Hartman
maintainerPATCH 15/38 regmap: regcache-rbtree: Fix present bitmap resize
In reply to Greg Kroah-Hartman3.14-stable review patch. If anyone has any objections, please let me know.
------------------
From: Lars-Peter Clausen <[email protected]>
commit 328f494d95aac8bd4896aea2328bc281053bcb71 upstream.
When inserting a new register into a block at the lower end the present bitmap is currently shifted into the wrong direction. The effect of this is that the bitmap becomes corrupted and registers which are present might be reported as not present and vice versa.
Fix this by shifting left rather than right.
--- drivers/base/regmap/regcache-rbtree.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
drivers/base/regmap/regcache-rbtree.c +1 -1
@@ -313,7 +313,7 @@ static int regcache_rbtree_insert_to_bloif (pos ==0 ) {memmove (blk + offset * map->cache_word_size, blk, rbnode->blklen * map->cache_word_size); -bitmap_shift_right (present, present, offset, blklen); +bitmap_shift_left (present, present, offset, blklen); }/* update the rbnode block, its size and the base register */
Greg Kroah-Hartman
maintainerPATCH 17/38 tcm_fc: missing curly braces in ft_invl_hw_context()
In reply to Greg Kroah-Hartman3.14-stable review patch. If anyone has any objections, please let me know.
------------------
From: Dan Carpenter <[email protected]>
commit d556546e7ecd9fca199df4698943024d40044f8e upstream.
This patch adds a missing set of conditional check braces in ft_invl_hw_context() originally introduced by commit dcd998ccd when handling DDP failures in ft_recv_write_data() code.
commit dcd998ccdbf74a7d8fe0f0a44e85da1ed5975946
Author: Kiran Patil <[email protected]>
Date: Wed Aug 3 09:20:01 2011 +0000
tcm_fc: Handle DDP/SW fc_frame_payload_get failures in ft_recv_write_data
--- drivers/target/tcm_fc/tfc_io.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-)
drivers/target/tcm_fc/tfc_io.c +2 -1
@@ -346,7 +346,7 @@ void ft_invl_hw_context(struct ft_cmd *c ep =fc_seq_exch (seq);if (ep) { lport = ep->lp; -if (lport && (ep->xid <= lport->lro_xid)) +if (lport && (ep->xid <= lport->lro_xid)) {/* * "ddp_done" trigger invalidation of HW * specific DDP context
@@ -361,6 +361,7 @@ void ft_invl_hw_context(struct ft_cmd *c* identified using ep->xid) */ cmd->was_ddp_setup =0 ; + } } } }
Greg Kroah-Hartman
maintainerPATCH 18/38 tcm_qla2xxx: Fix incorrect use of __transport_register_session
In reply to Greg Kroah-Hartman3.14-stable review patch. If anyone has any objections, please let me know.
------------------
From: Bart Van Assche <[email protected]>
commit 75c3d0bf9caebb502e96683b2bc37f9692437e68 upstream.
This patch fixes the incorrect use of __transport_register_session() in tcm_qla2xxx_check_initiator_node_acl() code, that does not perform explicit se_tpg->session_lock when accessing se_tpg->tpg_sess_list to add new se_sess nodes.
Given that tcm_qla2xxx_check_initiator_node_acl() is not called with qla_hw->hardware_lock held for all accesses of ->tpg_sess_list, the code should be using transport_register_session() instead.
--- drivers/scsi/qla2xxx/tcm_qla2xxx.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
drivers/scsi/qla2xxx/tcm_qla2xxx.c +1 -1
@@ -1515,7 +1515,7 @@ static int tcm_qla2xxx_check_initiator_n/* * Finally register the new FC Nexus with TCM */ -__transport_register_session (se_nacl->se_tpg, se_nacl, se_sess, sess); +transport_register_session (se_nacl->se_tpg, se_nacl, se_sess, sess);return 0 ; }
Greg Kroah-Hartman
maintainerPATCH 19/38 nl80211: ignore HT/VHT capabilities without QoS/WMM
In reply to Greg Kroah-Hartman3.14-stable review patch. If anyone has any objections, please let me know.
------------------
From: Johannes Berg <[email protected]>
commit 496fcc294daab18799e190c0264863d653588d1f upstream.
As HT/VHT depend heavily on QoS/WMM, it's not a good idea to let userspace add clients that have HT/VHT but not QoS/WMM. Since it does so in certain cases we've observed (client is using HT IEs but not QoS/WMM) just ignore the HT/VHT info at this point and don't pass it down to the drivers which might unconditionally use it.
--- net/wireless/nl80211.c | 10 ++++++++++ 1 file changed, 10 insertions(+)
net/wireless/nl80211.c +10 -0
@@ -4190,6 +4190,16 @@ static int nl80211_new_station(struct skif (parse_station_flags (info, dev->ieee80211_ptr->iftype, ¶ms))return -EINVAL ; +/* HT/VHT requires QoS, but if we don't have that just ignore HT/VHT +* as userspace might just pass through the capabilities from the IEs +* directly, rather than enforcing this restriction and returning an +* error in this case. +*/ +if (!(params.sta_flags_set &BIT (NL80211_STA_FLAG_WME ))) { + params.ht_capa =NULL ; + params.vht_capa =NULL ; + } +/* When you run into this, adjust the code below for the new flag */ BUILD_BUG_ON (NL80211_STA_FLAG_MAX !=7 );
Greg Kroah-Hartman
maintainerPATCH 20/38 mac80211: disable u-APSD queues by default
In reply to Greg Kroah-Hartman3.14-stable review patch. If anyone has any objections, please let me know.
------------------
From: Michal Kazior <[email protected]>
commit aa75ebc275b2a91b193654a177daf900ad6703f0 upstream.
Some APs experience problems when working with U-APSD. Decreasing the probability of that happening by using legacy mode for all ACs but VO isn't enough.
Cisco 4410N originally forced us to enable VO by default only because it treated non-VO ACs as legacy.
However some APs (notably Netgear R7000) silently reclassify packets to different ACs. Since u-APSD ACs require trigger frames for frame retrieval clients would never see some frames (e.g. ARP responses) or would fetch them accidentally after a long time.
It makes little sense to enable u-APSD queues by default because it needs userspace applications to be aware of it to actually take advantage of the possible additional powersavings. Implicitly depending on driver autotrigger frame support doesn't make much sense.
--- net/mac80211/ieee80211_i.h | 23 +++++++++++++++++------ 1 file changed, 17 insertions(+), 6 deletions(-)
net/mac80211/ieee80211_i.h +17 -6
@@ -57,13 +57,24 @@ struct ieee80211_local;#define IEEE80211_UNSET_POWER_LEVEL INT_MIN/* -* Some APs experience problems when working with U-APSD. Decrease the -* probability of that happening by using legacy mode for all ACs but VO. -* The AP that caused us trouble was a Cisco 4410N. It ignores our -* setting, and always treats non-VO ACs as legacy. +* Some APs experience problems when working with U-APSD. Decreasing the +* probability of that happening by using legacy mode for all ACs but VO isn't +* enough. +* +* Cisco 4410N originally forced us to enable VO by default only because it +* treated non-VO ACs as legacy. +* +* However some APs (notably Netgear R7000) silently reclassify packets to +* different ACs. Since u-APSD ACs require trigger frames for frame retrieval +* clients would never see some frames (e.g. ARP responses) or would fetch them +* accidentally after a long time. +* +* It makes little sense to enable u-APSD queues by default because it needs +* userspace applications to be aware of it to actually take advantage of the +* possible additional powersavings. Implicitly depending on driver autotrigger +* frame support doesn't make much sense. */ -#define IEEE80211_DEFAULT_UAPSD_QUEUES \ - IEEE80211_WMM_IE_STA_QOSINFO_AC_VO +#define IEEE80211_DEFAULT_UAPSD_QUEUES 0#define IEEE80211_DEFAULT_MAX_SP_LEN \ IEEE80211_WMM_IE_STA_QOSINFO_SP_ALL
Greg Kroah-Hartman
maintainerPATCH 21/38 mac80211: drop unencrypted frames in mesh fwding
In reply to Greg Kroah-Hartman3.14-stable review patch. If anyone has any objections, please let me know.
------------------
From: Bob Copeland <[email protected]>
commit d0c22119f574b851e63360c6b8660fe9593bbc3c upstream.
The mesh forwarding path was not checking that data frames were protected when running an encrypted network; add the necessary check.
--- net/mac80211/rx.c | 3 +++ 1 file changed, 3 insertions(+)
net/mac80211/rx.c +3 -0
@@ -2107,6 +2107,9 @@ ieee80211_rx_h_mesh_fwding(struct ieee80 hdr = (struct ieee80211_hdr *) skb->data; mesh_hdr = (struct ieee80211s_hdr *) (skb->data + hdrlen); +if (ieee80211_drop_unencrypted (rx, hdr->frame_control)) +return RX_DROP_MONITOR ; +/* frame is in RMC, don't forward */ if (ieee80211_is_data(hdr->frame_control) && is_multicast_ether_addr(hdr->addr1) &&
Greg Kroah-Hartman
maintainerPATCH 22/38 Revert "iwlwifi: mvm: fix failure path when power_update fails in add_interface"
In reply to Greg Kroah-Hartman3.14-stable review patch. If anyone has any objections, please let me know.
------------------
This reverts commit 5ac97a1b97e50ef197b64b72c1cd71779e4ecbbe
It was incorrectly applied, as it merged with fuzz.
--- drivers/net/wireless/iwlwifi/mvm/mac80211.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
drivers/net/wireless/iwlwifi/mvm/mac80211.c +1 -1
@@ -594,7 +594,7 @@ static int iwl_mvm_mac_add_interface(str ret =iwl_mvm_mac_ctxt_add (mvm, vif);if (ret) - goto out_remove_mac; + goto out_release;iwl_mvm_power_disable (mvm, vif);
Greg Kroah-Hartman
maintainerPATCH 23/38 phy: Find the right match in devm_phy_destroy()
In reply to Greg Kroah-Hartman3.14-stable review patch. If anyone has any objections, please let me know.
------------------
From: Thierry Reding <[email protected]>
commit 2f1bce487cd0a02623cff3d877940f9a2026341c upstream.
devm_phy_create() stores the pointer to the new PHY at the address returned by devres_alloc(). The res parameter passed to devm_phy_match() is therefore the location where the pointer to the PHY is stored, hence it needs to be dereferenced before comparing to the match data in order to find the correct match.
--- drivers/phy/phy-core.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-)
drivers/phy/phy-core.c +3 -1
@@ -50,7 +50,9 @@ static void devm_phy_consume(struct devistatic int devm_phy_match (struct device *dev,void *res,void *match_data) { -return res == match_data; +struct phy **phy = res; + +return *phy == match_data; }static struct phy *phy_lookup (struct device *device,const char *port)
Greg Kroah-Hartman
maintainerPATCH 24/38 of/irq: Fix of_irq_parse_one() returned error codes
In reply to Greg Kroah-Hartman3.14-stable review patch. If anyone has any objections, please let me know.
------------------
From: Laurent Pinchart <[email protected]>
commit d7c146053dd195b90c79b9b8131431f44541d015 upstream.
The error code paths that require cleanup use a goto to jump to the cleanup code and return an error code. However, the error code variable res, which is initialized to -EINVAL when declared, is then overwritten with the return value of of_parse_phandle_with_args(), and reused as the return code from of_irq_parse_one(). This leads to an undetermined error being returned instead of the expected -EINVAL value. Fix it.
--- drivers/of/irq.c | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-)
drivers/of/irq.c +7 -3
@@ -290,7 +290,7 @@ int of_irq_parse_one(struct device_nodestruct device_node *p;const __be32 *intspec, *tmp, *addr;u32 intsize, intlen; -int i, res = -EINVAL ; +int i, res;pr_debug ("of_irq_parse_one: dev=%s, index=%d\n" ,of_node_full_name (device), index);
@@ -323,15 +323,19 @@ int of_irq_parse_one(struct device_node/* Get size of interrupt specifier */ tmp =of_get_property (p,"#interrupt-cells" ,NULL ); -if (tmp ==NULL ) +if (tmp ==NULL ) { + res = -EINVAL ; goto out; + } intsize =be32_to_cpu (*tmp);pr_debug (" intsize=%d intlen=%d\n" , intsize, intlen);/* Check index */ -if ((index +1 ) * intsize > intlen) +if ((index +1 ) * intsize > intlen) { + res = -EINVAL ; goto out; + }/* Copy intspec into irq structure */ intspec += index * intsize;
Greg Kroah-Hartman
maintainerPATCH 25/38 perf: Fix irq_work tail recursion
In reply to Greg Kroah-Hartman3.14-stable review patch. If anyone has any objections, please let me know.
------------------
From: Peter Zijlstra <[email protected]>
commit d525211f9d1be8b523ec7633f080f2116f5ea536 upstream.
Vince reported a watchdog lockup like:
[<ffffffff8115e114>] perf_tp_event+0xc4/0x210 [<ffffffff810b4f8a>] perf_trace_lock+0x12a/0x160 [<ffffffff810b7f10>] lock_release+0x130/0x260 [<ffffffff816c7474>] _raw_spin_unlock_irqrestore+0x24/0x40 [<ffffffff8107bb4d>] do_send_sig_info+0x5d/0x80 [<ffffffff811f69df>] send_sigio_to_task+0x12f/0x1a0 [<ffffffff811f71ce>] send_sigio+0xae/0x100 [<ffffffff811f72b7>] kill_fasync+0x97/0xf0 [<ffffffff8115d0b4>] perf_event_wakeup+0xd4/0xf0 [<ffffffff8115d103>] perf_pending_event+0x33/0x60 [<ffffffff8114e3fc>] irq_work_run_list+0x4c/0x80 [<ffffffff8114e448>] irq_work_run+0x18/0x40 [<ffffffff810196af>] smp_trace_irq_work_interrupt+0x3f/0xc0 [<ffffffff816c99bd>] trace_irq_work_interrupt+0x6d/0x80
Which is caused by an irq_work generating new irq_work and therefore not allowing forward progress.
This happens because processing the perf irq_work triggers another perf event (tracepoint stuff) which in turn generates an irq_work ad infinitum.
Avoid this by raising the recursion counter in the irq_work -- which effectively disables all software events (including tracepoints) from actually triggering again.
--- kernel/events/core.c | 10 ++++++++++ 1 file changed, 10 insertions(+)
kernel/events/core.c +10 -0
@@ -4232,6 +4232,13 @@ static void perf_pending_event(struct ir {struct perf_event *event =container_of (entry, struct perf_event, pending); +int rctx; + + rctx =perf_swevent_get_recursion_context (); +/* +* If we 'fail' here, that's OK, it means recursion is already disabled +* and we won't recurse 'further'. +*/ if (event->pending_disable) { event->pending_disable =0 ;
@@ -4242,6 +4249,9 @@ static void perf_pending_event(struct ir event->pending_wakeup =0 ;perf_event_wakeup (event); } + +if (rctx >=0 ) +perf_swevent_put_recursion_context (rctx); }/*
Greg Kroah-Hartman
maintainerPATCH 26/38 staging: vt6656: vnt_rf_setpower: fix missing rate RATE_12M
In reply to Greg Kroah-Hartman3.14-stable review patch. If anyone has any objections, please let me know.
------------------
From: Malcolm Priestley <[email protected]>
commit 163fe301b9f78b6de57d0014eafe504fd20c0cd4 upstream.
When the driver sets this rate a power of zero value is set causing data flow stoppage until another rate is tried.
--- drivers/staging/vt6656/rf.c | 1 + 1 file changed, 1 insertion(+)
drivers/staging/vt6656/rf.c +1 -0
@@ -752,6 +752,7 @@ int RFbSetPower(struct vnt_private *privbreak ;case RATE_6M :case RATE_9M : +case RATE_12M :case RATE_18M :case RATE_24M :case RATE_36M :
Greg Kroah-Hartman
maintainerPATCH 27/38 vt6655: RFbSetPower fix missing rate RATE_12M
In reply to Greg Kroah-Hartman3.14-stable review patch. If anyone has any objections, please let me know.
------------------
From: Malcolm Priestley <[email protected]>
commit 40c8790bcb7ac74f3038153cd09310e220c6a1df upstream.
When the driver sets this rate a power of zero value is set causing data flow stoppage until another rate is tried.
--- drivers/staging/vt6655/rf.c | 1 + 1 file changed, 1 insertion(+)
drivers/staging/vt6655/rf.c +1 -0
@@ -936,6 +936,7 @@ bool RFbSetPower(break ;case RATE_6M :case RATE_9M : +case RATE_12M :case RATE_18M : byPwr = pDevice->abyOFDMPwrTbl[uCH];if (pDevice->byRFType ==RF_UW2452 ) {
Greg Kroah-Hartman
maintainerPATCH 28/38 dmaengine: dw: append MODULE_ALIAS for platform driver
In reply to Greg Kroah-Hartman3.14-stable review patch. If anyone has any objections, please let me know.
------------------
From: Andy Shevchenko <[email protected]>
commit a104a45ba7a51b5b4c5e8437020d9d48edf22f89 upstream.
The commit 9cade1a46c77 (dma: dw: split driver to library part and platform code) introduced a separate platform driver but missed to add a MODULE_ALIAS("platform:dw_dmac"); to that module.
The patch adds this to get driver loaded automatically if platform device is registered.
--- drivers/dma/dw/platform.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-)
drivers/dma/dw/platform.c +4 -1
@@ -48,6 +48,8 @@ static bool dw_dma_of_filter(struct dma_return true; } +#define DRV_NAME "dw_dmac" +static struct dma_chan *dw_dma_of_xlate (struct of_phandle_args *dma_spec,struct of_dma *ofdma) {
@@ -293,7 +295,7 @@ static struct platform_driver dw_driver .remove = dw_remove, .shutdown = dw_shutdown, .driver = { - .name = "dw_dmac", + .name = DRV_NAME, .pm = &dw_dev_pm_ops, .of_match_table = of_match_ptr(dw_dma_of_id_table), .acpi_match_table = ACPI_PTR(dw_dma_acpi_id_table),
@@ -314,3 +316,4 @@ module_exit(dw_exit);MODULE_LICENSE ("GPL v2" );MODULE_DESCRIPTION ("Synopsys DesignWare DMA Controller platform driver" ); +MODULE_ALIAS ("platform:" DRV_NAME );
Greg Kroah-Hartman
maintainerPATCH 29/38 dm: hold suspend_lock while suspending device during device deletion
In reply to Greg Kroah-Hartman3.14-stable review patch. If anyone has any objections, please let me know.
------------------
From: Mikulas Patocka <[email protected]>
commit ab7c7bb6f4ab95dbca96fcfc4463cd69843e3e24 upstream.
__dm_destroy() must take the suspend_lock so that its presuspend and postsuspend calls do not race with an internal suspend.
--- drivers/md/dm.c | 6 ++++++ 1 file changed, 6 insertions(+)
drivers/md/dm.c +6 -0
@@ -2352,10 +2352,16 @@ static void __dm_destroy(struct mapped_dset_bit (DMF_FREEING , &md->flags);spin_unlock (&_minor_lock); +/* +* Take suspend_lock so that presuspend and postsuspend methods +* do not race with internal suspend. +*/ +mutex_lock (&md->suspend_lock);if (!dm_suspended_md (md)) {dm_table_presuspend_targets (map);dm_table_postsuspend_targets (map); } +mutex_unlock (&md->suspend_lock);/* dm_put_live_table must be before msleep, otherwise deadlock is possible */ dm_put_live_table (md, srcu_idx);
Greg Kroah-Hartman
maintainerPATCH 30/38 dm io: deal with wandering queue limits when handling REQ_DISCARD and REQ_WRITE_SAME
In reply to Greg Kroah-Hartman3.14-stable review patch. If anyone has any objections, please let me know.
------------------
From: "Darrick J. Wong" <[email protected]>
commit e5db29806b99ce2b2640d2e4d4fcb983cea115c5 upstream.
Since it's possible for the discard and write same queue limits to change while the upper level command is being sliced and diced, fix up both of them (a) to reject IO if the special command is unsupported at the start of the function and (b) read the limits once and let the commands error out on their own if the status happens to change.
--- drivers/md/dm-io.c | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-)
drivers/md/dm-io.c +11 -4
@@ -291,9 +291,16 @@ static void do_region(int rw, unsigned rstruct request_queue *q =bdev_get_queue (where->bdev);unsigned short logical_block_size =queue_logical_block_size (q);sector_t num_sectors; +unsigned int uninitialized_var (special_cmd_max_sectors ); -/* Reject unsupported discard requests */ -if ((rw &REQ_DISCARD ) && !blk_queue_discard (q)) { +/* +* Reject unsupported discard and write same requests. +*/ +if (rw &REQ_DISCARD ) + special_cmd_max_sectors = q->limits.max_discard_sectors; +else if (rw &REQ_WRITE_SAME ) + special_cmd_max_sectors = q->limits.max_write_same_sectors; +if ((rw & (REQ_DISCARD |REQ_WRITE_SAME )) && special_cmd_max_sectors ==0 ) {dec_count (io, region, -EOPNOTSUPP );return ; }
@@ -319,7 +326,7 @@ static void do_region(int rw, unsigned rstore_io_and_region_in_bio (bio, io, region);if (rw &REQ_DISCARD ) { - num_sectors =min_t (sector_t, q->limits.max_discard_sectors, remaining); + num_sectors =min_t (sector_t, special_cmd_max_sectors, remaining); bio->bi_iter.bi_size = num_sectors <<SECTOR_SHIFT ; remaining -= num_sectors; }else if (rw &REQ_WRITE_SAME ) {
@@ -328,7 +335,7 @@ static void do_region(int rw, unsigned r*/ dp->get_page (dp, &page, &len, &offset);bio_add_page (bio, page, logical_block_size, offset); - num_sectors =min_t (sector_t, q->limits.max_write_same_sectors, remaining); + num_sectors =min_t (sector_t, special_cmd_max_sectors, remaining); bio->bi_iter.bi_size = num_sectors <<SECTOR_SHIFT ; offset =0 ;
Greg Kroah-Hartman
maintainerPATCH 32/38 hfsplus: fix B-tree corruption after insertion at position 0
In reply to Greg Kroah-Hartman3.14-stable review patch. If anyone has any objections, please let me know.
------------------
From: Sergei Antonov <[email protected]>
commit 98cf21c61a7f5419d82f847c4d77bf6e96a76f5f upstream.
Fix B-tree corruption when a new record is inserted at position 0 in the node in hfs_brec_insert(). In this case a hfs_brec_update_parent() is called to update the parent index node (if exists) and it is passed hfs_find_data with a search_key containing a newly inserted key instead of the key to be updated. This results in an inconsistent index node. The bug reproduces on my machine after an extents overflow record for the catalog file (CNID=4) is inserted into the extents overflow B-tree. Because of a low (reserved) value of CNID=4, it has to become the first record in the first leaf node.
The resulting first leaf node is correct:
----------------------------------------------------
| key0.CNID=4 | key1.CNID=123 | key2.CNID=456, ... |
----------------------------------------------------
But the parent index key0 still contains the previous key CNID=123:
-----------------------
| key0.CNID=123 | ... |
-----------------------
A change in hfs_brec_insert() makes hfs_brec_update_parent() work correctly by preventing it from getting fd->record=-1 value from __hfs_brec_find().
Along the way, I removed duplicate code with unification of the if condition. The resulting code is equivalent to the original code because node is never 0.
Also hfs_brec_update_parent() will now return an error after getting a negative fd->record value. However, the return value of hfs_brec_update_parent() is not checked anywhere in the file and I'm leaving it unchanged by this patch. brec.c lacks error checking after some other calls too, but this issue is of less importance than the one being fixed by this patch.
--- fs/hfsplus/brec.c | 20 +++++++++++--------- 1 file changed, 11 insertions(+), 9 deletions(-)
fs/hfsplus/brec.c +11 -9
@@ -131,13 +131,16 @@ skip:hfs_bnode_write (node, entry, data_off + key_len, entry_len);hfs_bnode_dump (node); -if (new_node) { -/* update parent key if we inserted a key -* at the start of the first node -*/ -if (!rec && new_node != node) -hfs_brec_update_parent (fd); +/* +* update parent key if we inserted a key +* at the start of the node and it is not the new node +*/ +if (!rec && new_node != node) { +hfs_bnode_read_key (node, fd->search_key, data_off + size); +hfs_brec_update_parent (fd); + } +if (new_node) {hfs_bnode_put (fd->bnode);if (!new_node->parent) {hfs_btree_inc_height (tree);
@@ -168,9 +171,6 @@ skip: goto again; } -if (!rec) -hfs_brec_update_parent (fd); -return 0 ; }
@@ -370,6 +370,8 @@ again:if (IS_ERR (parent))return PTR_ERR (parent);__hfs_brec_find (parent, fd, hfs_find_rec_by_key); +if (fd->record <0 ) +return -ENOENT ;hfs_bnode_dump (parent); rec = fd->record;
Greg Kroah-Hartman
maintainerPATCH 33/38 powerpc/book3s: Fix the MCE code to use CONFIG_KVM_BOOK3S_64_HANDLER
In reply to Greg Kroah-Hartman3.14-stable review patch. If anyone has any objections, please let me know.
------------------
From: Mahesh Salgaonkar <[email protected]>
commit 44d5f6f5901e996744858c175baee320ccf1eda3 upstream.
commit id 2ba9f0d has changed CONFIG_KVM_BOOK3S_64_HV to tristate to allow HV/PR bits to be built as modules. But the MCE code still depends on CONFIG_KVM_BOOK3S_64_HV which is wrong. When user selects CONFIG_KVM_BOOK3S_64_HV=m to build HV/PR bits as a separate module the relevant MCE code gets excluded.
This patch fixes the MCE code to use CONFIG_KVM_BOOK3S_64_HANDLER. This makes sure that the relevant MCE code is included when HV/PR bits are built as a separate modules.
--- arch/powerpc/kernel/exceptions-64s.S | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
arch/powerpc/kernel/exceptions-64s.S +1 -1
@@ -1422,7 +1422,7 @@ machine_check_handle_early: bne 9f /* continue in V mode if we are. */ 5: -#ifdef CONFIG_KVM_BOOK3S_64_HV +#ifdef CONFIG_KVM_BOOK3S_64_HANDLER /* * We are coming from kernel context. Check if we are coming from * guest. if yes, then we can continue. We will fall through
Greg Kroah-Hartman
maintainerPATCH 34/38 arm64: Use the reserved TTBR0 if context switching to the init_mm
In reply to Greg Kroah-Hartman3.14-stable review patch. If anyone has any objections, please let me know.
------------------
From: Catalin Marinas <[email protected]>
commit e53f21bce4d35a93b23d8fa1a840860f6c74f59e upstream.
The idle_task_exit() function may call switch_mm() with next == &init_mm. On arm64, init_mm.pgd cannot be used for user mappings, so this patch simply sets the reserved TTBR0.
--- arch/arm64/include/asm/mmu_context.h | 9 +++++++++ 1 file changed, 9 insertions(+)
arch/arm64/include/asm/mmu_context.h +9 -0
@@ -151,6 +151,15 @@ switch_mm(struct mm_struct *prev, struct {unsigned int cpu =smp_processor_id (); +/* +* init_mm.pgd does not contain any user mappings and it is always +* active for kernel addresses in TTBR1. Just set the reserved TTBR0. +*/ +if (next == &init_mm) { +cpu_set_reserved_ttbr0 (); +return ; + } +if (!cpumask_test_and_set_cpu (cpu,mm_cpumask (next)) || prev != next)check_and_switch_context (next, tsk); }
Greg Kroah-Hartman
maintainerPATCH 35/38 powerpc/pseries: Little endian fixes for post mobility device tree update
In reply to Greg Kroah-Hartman3.14-stable review patch. If anyone has any objections, please let me know.
------------------
From: Tyrel Datwyler <[email protected]>
commit f6ff04149637723261aa4738958b0098b929ee9e upstream.
We currently use the device tree update code in the kernel after resuming from a suspend operation to re-sync the kernels view of the device tree with that of the hypervisor. The code as it stands is not endian safe as it relies on parsing buffers returned by RTAS calls that thusly contains data in big endian format.
This patch annotates variables and structure members with __be types as well as performing necessary byte swaps to cpu endian for data that needs to be parsed.
--- arch/powerpc/platforms/pseries/mobility.c | 44 +++++++++++++++--------------- 1 file changed, 23 insertions(+), 21 deletions(-)
arch/powerpc/platforms/pseries/mobility.c +23 -21
@@ -24,10 +24,10 @@static struct kobject *mobility_kobj;struct update_props_workarea { -u32 phandle; -u32 state; -u64 reserved; -u32 nprops; +__be32 phandle; +__be32 state; +__be64 reserved; +__be32 nprops; } __packed;#define NODE_ACTION_MASK 0xff000000
@@ -53,11 +53,11 @@ static int mobility_rtas_call(int token,return rc; } -static int delete_dt_node (u32 phandle) +static int delete_dt_node (__be32 phandle) {struct device_node *dn; - dn =of_find_node_by_phandle (phandle); + dn =of_find_node_by_phandle (be32_to_cpu (phandle));if (!dn)return -ENOENT ;
@@ -126,7 +126,7 @@ static int update_dt_property(struct devreturn 0 ; } -static int update_dt_node (u32 phandle,s32 scope) +static int update_dt_node (__be32 phandle,s32 scope) {struct update_props_workarea *upwa;struct device_node *dn;
@@ -135,6 +135,7 @@ static int update_dt_node(u32 phandle, schar *prop_data;char *rtas_buf;int update_properties_token; +u32 nprops;u32 vd; update_properties_token =rtas_token ("ibm,update-properties" );
@@ -145,7 +146,7 @@ static int update_dt_node(u32 phandle, sif (!rtas_buf)return -ENOMEM ; - dn =of_find_node_by_phandle (phandle); + dn =of_find_node_by_phandle (be32_to_cpu (phandle));if (!dn) {kfree (rtas_buf);return -ENOENT ;
@@ -161,6 +162,7 @@ static int update_dt_node(u32 phandle, sbreak ; prop_data = rtas_buf +sizeof (*upwa); + nprops =be32_to_cpu (upwa->nprops);/* On the first call to ibm,update-properties for a node the * the first property value descriptor contains an empty
@@ -169,17 +171,17 @@ static int update_dt_node(u32 phandle, s*/ if (*prop_data ==0 ) { prop_data++; - vd = *(u32 *)prop_data; + vd =be32_to_cpu (*(__be32 *)prop_data); prop_data += vd +sizeof (vd); - upwa->nprops--; + nprops--; } -for (i =0 ; i < upwa->nprops; i++) { +for (i =0 ; i < nprops; i++) {char *prop_name; prop_name = prop_data; prop_data +=strlen (prop_name) +1 ; - vd = *(u32 *)prop_data; + vd =be32_to_cpu (*(__be32 *)prop_data); prop_data +=sizeof (vd);switch (vd) {
@@ -211,13 +213,13 @@ static int update_dt_node(u32 phandle, sreturn 0 ; } -static int add_dt_node (u32 parent_phandle,u32 drc_index) +static int add_dt_node (__be32 parent_phandle,__be32 drc_index) {struct device_node *dn;struct device_node *parent_dn;int rc; - parent_dn =of_find_node_by_phandle (parent_phandle); + parent_dn =of_find_node_by_phandle (be32_to_cpu (parent_phandle));if (!parent_dn)return -ENOENT ;
@@ -236,7 +238,7 @@ static int add_dt_node(u32 parent_phandlint pseries_devicetree_update (s32 scope) {char *rtas_buf; -u32 *data; +__be32 *data;int update_nodes_token;int rc;
@@ -253,17 +255,17 @@ int pseries_devicetree_update(s32 scope)if (rc && rc !=1 )break ; - data = (u32 *)rtas_buf +4 ; -while (*data &NODE_ACTION_MASK ) { + data = (__be32 *)rtas_buf +4 ; +while (be32_to_cpu (*data) &NODE_ACTION_MASK ) {int i; -u32 action = *data &NODE_ACTION_MASK ; -int node_count = *data &NODE_COUNT_MASK ; +u32 action =be32_to_cpu (*data) &NODE_ACTION_MASK ; +u32 node_count =be32_to_cpu (*data) &NODE_COUNT_MASK ; data++;for (i =0 ; i < node_count; i++) { -u32 phandle = *data++; -u32 drc_index; +__be32 phandle = *data++; +__be32 drc_index;switch (action) {case DELETE_DT_NODE :
Greg Kroah-Hartman
maintainerPATCH 36/38 powerpc/mpc85xx: Add ranges to etsec2 nodes
In reply to Greg Kroah-Hartman3.14-stable review patch. If anyone has any objections, please let me know.
------------------
From: Scott Wood <[email protected]>
commit bb344ca5b90df62b1a3b7a35c6a9d00b306a170d upstream.
Commit 746c9e9f92dd "of/base: Fix PowerPC address parsing hack" limited the applicability of the workaround whereby a missing ranges is treated as an empty ranges. This workaround was hiding a bug in the etsec2 device tree nodes, which have children with reg, but did not have ranges.
--- arch/powerpc/boot/dts/fsl/pq3-etsec2-0.dtsi | 1 + arch/powerpc/boot/dts/fsl/pq3-etsec2-1.dtsi | 1 + arch/powerpc/boot/dts/fsl/pq3-etsec2-2.dtsi | 1 + 3 files changed, 3 insertions(+)
arch/powerpc/boot/dts/fsl/pq3-etsec2-0.dtsi +1 -0
@@ -50,6 +50,7 @@ ethernet@b0000 { fsl,num_tx_queues = <0x8>; fsl,magic-packet; local-mac-address = [ 00 00 00 00 00 00 ]; + ranges; queue-group@b0000 { #address-cells = <1>;
arch/powerpc/boot/dts/fsl/pq3-etsec2-1.dtsi +1 -0
@@ -50,6 +50,7 @@ ethernet@b1000 { fsl,num_tx_queues = <0x8>; fsl,magic-packet; local-mac-address = [ 00 00 00 00 00 00 ]; + ranges; queue-group@b1000 { #address-cells = <1>;
arch/powerpc/boot/dts/fsl/pq3-etsec2-2.dtsi +1 -0
@@ -49,6 +49,7 @@ ethernet@b2000 { fsl,num_tx_queues = <0x8>; fsl,magic-packet; local-mac-address = [ 00 00 00 00 00 00 ]; + ranges; queue-group@b2000 { #address-cells = <1>;
Greg Kroah-Hartman
maintainerPATCH 37/38 net: ethernet: pcnet32: Setup the SRAM and NOUFLO on Am79C97{3, 5}
In reply to Greg Kroah-Hartman3.14-stable review patch. If anyone has any objections, please let me know.
------------------
From: Markos Chandras <[email protected]>
commit 87f966d97b89774162df04d2106c6350c8fe4cb3 upstream.
On a MIPS Malta board, tons of fifo underflow errors have been observed when using u-boot as bootloader instead of YAMON. The reason for that is that YAMON used to set the pcnet device to SRAM mode but u-boot does not. As a result, the default Tx threshold (64 bytes) is now too small to keep the fifo relatively used and it can result to Tx fifo underflow errors. As a result of which, it's best to setup the SRAM on supported controllers so we can always use the NOUFLO bit.
--- drivers/net/ethernet/amd/pcnet32.c | 31 +++++++++++++++++++++++++++++-- 1 file changed, 29 insertions(+), 2 deletions(-)
drivers/net/ethernet/amd/pcnet32.c +29 -2
@@ -1516,7 +1516,7 @@ pcnet32_probe1(unsigned long ioaddr, int {struct pcnet32_private *lp;int i, media; -int fdx, mii, fset, dxsuflo; +int fdx, mii, fset, dxsuflo, sram;int chip_version;char *chipname;struct net_device *dev;
@@ -1553,7 +1553,7 @@ pcnet32_probe1(unsigned long ioaddr, int }/* initialize variables */ - fdx = mii = fset = dxsuflo =0 ; + fdx = mii = fset = dxsuflo = sram =0 ; chip_version = (chip_version >>12 ) &0xffff ;switch (chip_version) {
@@ -1586,6 +1586,7 @@ pcnet32_probe1(unsigned long ioaddr, int chipname ="PCnet/FAST III 79C973" ;/* PCI */ fdx =1 ; mii =1 ; + sram =1 ;break ;case 0x2626 : chipname ="PCnet/Home 79C978" ;/* PCI */
@@ -1609,6 +1610,7 @@ pcnet32_probe1(unsigned long ioaddr, int chipname ="PCnet/FAST III 79C975" ;/* PCI */ fdx =1 ; mii =1 ; + sram =1 ;break ;case 0x2628 : chipname ="PCnet/PRO 79C976" ;
@@ -1637,6 +1639,31 @@ pcnet32_probe1(unsigned long ioaddr, int dxsuflo =1 ; } +/* +* The Am79C973/Am79C975 controllers come with 12K of SRAM +* which we can use for the Tx/Rx buffers but most importantly, +* the use of SRAM allow us to use the BCR18:NOUFLO bit to avoid +* Tx fifo underflows. +*/ +if (sram) { +/* +* The SRAM is being configured in two steps. First we +* set the SRAM size in the BCR25:SRAM_SIZE bits. According +* to the datasheet, each bit corresponds to a 512-byte +* page so we can have at most 24 pages. The SRAM_SIZE +* holds the value of the upper 8 bits of the 16-bit SRAM size. +* The low 8-bits start at 0x00 and end at 0xff. So the +* address range is from 0x0000 up to 0x17ff. Therefore, +* the SRAM_SIZE is set to 0x17. The next step is to set +* the BCR26:SRAM_BND midway through so the Tx and Rx +* buffers can share the SRAM equally. +*/ + a->write_bcr (ioaddr,25 ,0x17 ); + a->write_bcr (ioaddr,26 ,0xc ); +/* And finally enable the NOUFLO bit */ + a->write_bcr (ioaddr,18 , a->read_bcr (ioaddr,18 ) | (1 <<11 )); + } + dev =alloc_etherdev (sizeof (*lp));if (!dev) { ret = -ENOMEM ;
Greg Kroah-Hartman
maintainerPATCH 38/38 mfd: kempld-core: Fix callback return value check
In reply to Greg Kroah-Hartman3.14-stable review patch. If anyone has any objections, please let me know.
------------------
From: Ameya Palande <[email protected]>
commit c8648508ebfc597058d2cd00b6c539110264a167 upstream.
On success, callback function returns 0. So invert the if condition check so that we can break out of loop.
--- drivers/mfd/kempld-core.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
drivers/mfd/kempld-core.c +1 -1
@@ -629,7 +629,7 @@ static int __init kempld_init(void)if (force_device_id[0 ]) {for (id = kempld_dmi_table; id->matches[0 ].slot !=DMI_NONE ; id++)if (strstr (id->ident, force_device_id)) -if (id->callback && id->callback (id)) +if (id->callback && !id->callback (id))break ;if (id->matches[0 ].slot ==DMI_NONE )return -ENODEV ;
Quoted 8 lines · Greg Kroah-Hartman
This is the start of the stable review cycle for the 3.14.38 release. There are 38 patches in this series, all will be posted as a response to this one. If anyone has any issues with these being applied, please let me know.
Responses should be made by Sun Apr 12 13:16:19 UTC 2015. Anything received after that time might be too late.
Build results:
total: 123 pass: 123 fail: 0
Qemu test results:
total: 30 pass: 30 fail: 0
Details are available at http://server.roeck-us.net:8010/builders.
Guenter