]> git.ipfire.org Git - thirdparty/kernel/stable-queue.git/commitdiff
3.4-stable patches
authorGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Fri, 5 Apr 2013 18:39:18 +0000 (11:39 -0700)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Fri, 5 Apr 2013 18:39:18 +0000 (11:39 -0700)
added patches:
alsa-hda-bug-fix-on-return-value-when-getting-hdmi-eld-info.patch
alsa-hda-enabling-realtek-alc-671-codec.patch
alsa-hda-fix-typo-in-proc-output.patch
regmap-cache-fix-regcache-rbtree-sync.patch
reiserfs-fix-warning-and-inode-leak-when-deleting-inode-with-xattrs.patch
spi-mpc512x-psc-optionally-keep-psc-ss-asserted-across-xfer-segmensts.patch
spi-s3c64xx-modified-error-interrupt-handling-and-init.patch
ubifs-make-space-fixup-work-in-the-remount-case.patch

queue-3.4/alsa-hda-bug-fix-on-return-value-when-getting-hdmi-eld-info.patch [new file with mode: 0644]
queue-3.4/alsa-hda-enabling-realtek-alc-671-codec.patch [new file with mode: 0644]
queue-3.4/alsa-hda-fix-typo-in-proc-output.patch [new file with mode: 0644]
queue-3.4/regmap-cache-fix-regcache-rbtree-sync.patch [new file with mode: 0644]
queue-3.4/reiserfs-fix-warning-and-inode-leak-when-deleting-inode-with-xattrs.patch [new file with mode: 0644]
queue-3.4/series
queue-3.4/spi-mpc512x-psc-optionally-keep-psc-ss-asserted-across-xfer-segmensts.patch [new file with mode: 0644]
queue-3.4/spi-s3c64xx-modified-error-interrupt-handling-and-init.patch [new file with mode: 0644]
queue-3.4/ubifs-make-space-fixup-work-in-the-remount-case.patch [new file with mode: 0644]

diff --git a/queue-3.4/alsa-hda-bug-fix-on-return-value-when-getting-hdmi-eld-info.patch b/queue-3.4/alsa-hda-bug-fix-on-return-value-when-getting-hdmi-eld-info.patch
new file mode 100644 (file)
index 0000000..da3aa86
--- /dev/null
@@ -0,0 +1,34 @@
+From 2ef5692efad330b67a234e2c49edad38538751e7 Mon Sep 17 00:00:00 2001
+From: Mengdong Lin <mengdong.lin@intel.com>
+Date: Thu, 28 Mar 2013 05:20:22 -0400
+Subject: ALSA: hda - bug fix on return value when getting HDMI ELD info
+
+From: Mengdong Lin <mengdong.lin@intel.com>
+
+commit 2ef5692efad330b67a234e2c49edad38538751e7 upstream.
+
+In function snd_hdmi_get_eld(), the variable 'ret' should be initialized to 0.
+Otherwise it will be returned uninitialized as non-zero after ELD info is got
+successfully. Thus hdmi_present_sense() will always assume ELD info is invalid
+by mistake, and /proc file system cannot show the proper ELD info.
+
+Signed-off-by: Mengdong Lin <mengdong.lin@intel.com>
+Acked-by: David Henningsson <david.henningsson@canonical.com>
+Signed-off-by: Takashi Iwai <tiwai@suse.de>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ sound/pci/hda/hda_eld.c |    2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+--- a/sound/pci/hda/hda_eld.c
++++ b/sound/pci/hda/hda_eld.c
+@@ -322,7 +322,7 @@ int snd_hdmi_get_eld(struct hdmi_eld *el
+                    struct hda_codec *codec, hda_nid_t nid)
+ {
+       int i;
+-      int ret;
++      int ret = 0;
+       int size;
+       unsigned char *buf;
diff --git a/queue-3.4/alsa-hda-enabling-realtek-alc-671-codec.patch b/queue-3.4/alsa-hda-enabling-realtek-alc-671-codec.patch
new file mode 100644 (file)
index 0000000..9279716
--- /dev/null
@@ -0,0 +1,41 @@
+From 1d87caa69c04008e09f5ff47b5e6acb6116febc7 Mon Sep 17 00:00:00 2001
+From: Rainer Koenig <Rainer.Koenig@ts.fujitsu.com>
+Date: Thu, 4 Apr 2013 08:40:38 +0200
+Subject: ALSA: hda - Enabling Realtek ALC 671 codec
+
+From: Rainer Koenig <Rainer.Koenig@ts.fujitsu.com>
+
+commit 1d87caa69c04008e09f5ff47b5e6acb6116febc7 upstream.
+
+* Added the device ID to the modalias list and assinged ALC662 patches
+for it
+* Added 4 port support for the device ID 0671 in alc662_parse_auto_config
+
+Signed-off-by: Rainer Koenig <Rainer.Koenig@ts.fujitsu.com>
+Signed-off-by: Takashi Iwai <tiwai@suse.de>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ sound/pci/hda/patch_realtek.c |    4 +++-
+ 1 file changed, 3 insertions(+), 1 deletion(-)
+
+--- a/sound/pci/hda/patch_realtek.c
++++ b/sound/pci/hda/patch_realtek.c
+@@ -6629,7 +6629,8 @@ static int alc662_parse_auto_config(stru
+       const hda_nid_t *ssids;
+       if (codec->vendor_id == 0x10ec0272 || codec->vendor_id == 0x10ec0663 ||
+-          codec->vendor_id == 0x10ec0665 || codec->vendor_id == 0x10ec0670)
++          codec->vendor_id == 0x10ec0665 || codec->vendor_id == 0x10ec0670 ||
++          codec->vendor_id == 0x10ec0671)
+               ssids = alc663_ssids;
+       else
+               ssids = alc662_ssids;
+@@ -7056,6 +7057,7 @@ static const struct hda_codec_preset snd
+       { .id = 0x10ec0665, .name = "ALC665", .patch = patch_alc662 },
+       { .id = 0x10ec0668, .name = "ALC668", .patch = patch_alc662 },
+       { .id = 0x10ec0670, .name = "ALC670", .patch = patch_alc662 },
++      { .id = 0x10ec0671, .name = "ALC671", .patch = patch_alc662 },
+       { .id = 0x10ec0680, .name = "ALC680", .patch = patch_alc680 },
+       { .id = 0x10ec0880, .name = "ALC880", .patch = patch_alc880 },
+       { .id = 0x10ec0882, .name = "ALC882", .patch = patch_alc882 },
diff --git a/queue-3.4/alsa-hda-fix-typo-in-proc-output.patch b/queue-3.4/alsa-hda-fix-typo-in-proc-output.patch
new file mode 100644 (file)
index 0000000..bc35902
--- /dev/null
@@ -0,0 +1,31 @@
+From aeb3a97222832e5457c4b72d72235098ce4bfe8d Mon Sep 17 00:00:00 2001
+From: David Henningsson <david.henningsson@canonical.com>
+Date: Thu, 4 Apr 2013 11:47:13 +0200
+Subject: ALSA: hda - fix typo in proc output
+
+From: David Henningsson <david.henningsson@canonical.com>
+
+commit aeb3a97222832e5457c4b72d72235098ce4bfe8d upstream.
+
+Rename "Digitial In" to "Digital In". This function is only used for
+proc output, so should not cause any problems to change.
+
+Signed-off-by: David Henningsson <david.henningsson@canonical.com>
+Signed-off-by: Takashi Iwai <tiwai@suse.de>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ sound/pci/hda/hda_codec.c |    2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+--- a/sound/pci/hda/hda_codec.c
++++ b/sound/pci/hda/hda_codec.c
+@@ -165,7 +165,7 @@ const char *snd_hda_get_jack_type(u32 cf
+               "Line Out", "Speaker", "HP Out", "CD",
+               "SPDIF Out", "Digital Out", "Modem Line", "Modem Hand",
+               "Line In", "Aux", "Mic", "Telephony",
+-              "SPDIF In", "Digitial In", "Reserved", "Other"
++              "SPDIF In", "Digital In", "Reserved", "Other"
+       };
+       return jack_types[(cfg & AC_DEFCFG_DEVICE)
diff --git a/queue-3.4/regmap-cache-fix-regcache-rbtree-sync.patch b/queue-3.4/regmap-cache-fix-regcache-rbtree-sync.patch
new file mode 100644 (file)
index 0000000..6517016
--- /dev/null
@@ -0,0 +1,39 @@
+From 8abac3ba51b5525354e9b2ec0eed1c9e95c905d9 Mon Sep 17 00:00:00 2001
+From: Lars-Peter Clausen <lars@metafoo.de>
+Date: Wed, 13 Mar 2013 16:38:33 +0100
+Subject: regmap: cache Fix regcache-rbtree sync
+
+From: Lars-Peter Clausen <lars@metafoo.de>
+
+commit 8abac3ba51b5525354e9b2ec0eed1c9e95c905d9 upstream.
+
+The last register block, which falls into the specified range, is not handled
+correctly. The formula which calculates the number of register which should be
+synced is inverse (and off by one). E.g. if all registers in that block should
+be synced only one is synced, and if only one should be synced all (but one) are
+synced. To calculate the number of registers that need to be synced we need to
+subtract the number of the first register in the block from the max register
+number and add one. This patch updates the code accordingly.
+
+The issue was introduced in commit ac8d91c ("regmap: Supply ranges to the sync
+operations").
+
+Signed-off-by: Lars-Peter Clausen <lars@metafoo.de>
+Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ drivers/base/regmap/regcache-rbtree.c |    2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+--- a/drivers/base/regmap/regcache-rbtree.c
++++ b/drivers/base/regmap/regcache-rbtree.c
+@@ -392,7 +392,7 @@ static int regcache_rbtree_sync(struct r
+                       base = 0;
+               if (max < rbnode->base_reg + rbnode->blklen)
+-                      end = rbnode->base_reg + rbnode->blklen - max;
++                      end = max - rbnode->base_reg + 1;
+               else
+                       end = rbnode->blklen;
diff --git a/queue-3.4/reiserfs-fix-warning-and-inode-leak-when-deleting-inode-with-xattrs.patch b/queue-3.4/reiserfs-fix-warning-and-inode-leak-when-deleting-inode-with-xattrs.patch
new file mode 100644 (file)
index 0000000..ebaaaa7
--- /dev/null
@@ -0,0 +1,39 @@
+From 35e5cbc0af240778e61113286c019837e06aeec6 Mon Sep 17 00:00:00 2001
+From: Jan Kara <jack@suse.cz>
+Date: Fri, 29 Mar 2013 15:39:16 +0100
+Subject: reiserfs: Fix warning and inode leak when deleting inode with xattrs
+
+From: Jan Kara <jack@suse.cz>
+
+commit 35e5cbc0af240778e61113286c019837e06aeec6 upstream.
+
+After commit 21d8a15a (lookup_one_len: don't accept . and ..) reiserfs
+started failing to delete xattrs from inode. This was due to a buggy
+test for '.' and '..' in fill_with_dentries() which resulted in passing
+'.' and '..' entries to lookup_one_len() in some cases. That returned
+error and so we failed to iterate over all xattrs of and inode.
+
+Fix the test in fill_with_dentries() along the lines of the one in
+lookup_one_len().
+
+Reported-by: Pawel Zawora <pzawora@gmail.com>
+Signed-off-by: Jan Kara <jack@suse.cz>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ fs/reiserfs/xattr.c |    4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+--- a/fs/reiserfs/xattr.c
++++ b/fs/reiserfs/xattr.c
+@@ -187,8 +187,8 @@ fill_with_dentries(void *buf, const char
+       if (dbuf->count == ARRAY_SIZE(dbuf->dentries))
+               return -ENOSPC;
+-      if (name[0] == '.' && (name[1] == '\0' ||
+-                             (name[1] == '.' && name[2] == '\0')))
++      if (name[0] == '.' && (namelen < 2 ||
++                             (namelen == 2 && name[1] == '.')))
+               return 0;
+       dentry = lookup_one_len(name, dbuf->xadir, namelen);
index decb332879d813d6735259b7e23b1839f9b313f8..1b47d3e5d7f06f3eb15869cb1f00cb471ee874c6 100644 (file)
@@ -1 +1,9 @@
 asoc-dma-sh7760-fix-compile-error.patch
+regmap-cache-fix-regcache-rbtree-sync.patch
+spi-s3c64xx-modified-error-interrupt-handling-and-init.patch
+spi-mpc512x-psc-optionally-keep-psc-ss-asserted-across-xfer-segmensts.patch
+ubifs-make-space-fixup-work-in-the-remount-case.patch
+reiserfs-fix-warning-and-inode-leak-when-deleting-inode-with-xattrs.patch
+alsa-hda-bug-fix-on-return-value-when-getting-hdmi-eld-info.patch
+alsa-hda-enabling-realtek-alc-671-codec.patch
+alsa-hda-fix-typo-in-proc-output.patch
diff --git a/queue-3.4/spi-mpc512x-psc-optionally-keep-psc-ss-asserted-across-xfer-segmensts.patch b/queue-3.4/spi-mpc512x-psc-optionally-keep-psc-ss-asserted-across-xfer-segmensts.patch
new file mode 100644 (file)
index 0000000..88aee50
--- /dev/null
@@ -0,0 +1,43 @@
+From 1ad849aee5f53353ed88d9cd3d68a51b03a7d44f Mon Sep 17 00:00:00 2001
+From: Anatolij Gustschin <agust@denx.de>
+Date: Wed, 13 Mar 2013 14:57:43 +0100
+Subject: spi/mpc512x-psc: optionally keep PSC SS asserted across xfer segmensts
+
+From: Anatolij Gustschin <agust@denx.de>
+
+commit 1ad849aee5f53353ed88d9cd3d68a51b03a7d44f upstream.
+
+Some SPI slave devices require asserted chip select signal across
+multiple transfer segments of an SPI message. Currently the driver
+always de-asserts the internal SS signal for every single transfer
+segment of the message and ignores the 'cs_change' flag of the
+transfer description. Disable the internal chip select (SS) only
+if this is needed and indicated by the 'cs_change' flag.
+
+Without this change, each partial transfer of a surrounding
+multi-part SPI transaction might erroneously change the SS
+signal, which might prevent slaves from answering the request
+that was sent in a previous transfer segment because the
+transaction could be considered aborted (SS was de-asserted
+before reading the response).
+
+Reported-by: Gerhard Sittig <gerhard.sittig@ifm.com>
+Signed-off-by: Anatolij Gustschin <agust@denx.de>
+Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ drivers/spi/spi-mpc512x-psc.c |    2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+--- a/drivers/spi/spi-mpc512x-psc.c
++++ b/drivers/spi/spi-mpc512x-psc.c
+@@ -164,7 +164,7 @@ static int mpc512x_psc_spi_transfer_rxtx
+               for (i = count; i > 0; i--) {
+                       data = tx_buf ? *tx_buf++ : 0;
+-                      if (len == EOFBYTE)
++                      if (len == EOFBYTE && t->cs_change)
+                               setbits32(&fifo->txcmd, MPC512x_PSC_FIFO_EOF);
+                       out_8(&fifo->txdata_8, data);
+                       len--;
diff --git a/queue-3.4/spi-s3c64xx-modified-error-interrupt-handling-and-init.patch b/queue-3.4/spi-s3c64xx-modified-error-interrupt-handling-and-init.patch
new file mode 100644 (file)
index 0000000..71a1901
--- /dev/null
@@ -0,0 +1,88 @@
+From 375981f2e14868be16cafbffd34a4f16a6ee01c6 Mon Sep 17 00:00:00 2001
+From: Girish K S <girishks2000@gmail.com>
+Date: Wed, 13 Mar 2013 12:13:30 +0530
+Subject: spi/s3c64xx: modified error interrupt handling and init
+
+From: Girish K S <girishks2000@gmail.com>
+
+commit 375981f2e14868be16cafbffd34a4f16a6ee01c6 upstream.
+
+The status of the interrupt is available in the status register,
+so reading the clear pending register and writing back the same
+value will not actually clear the pending interrupts. This patch
+modifies the interrupt handler to read the status register and
+clear the corresponding pending bit in the clear pending register.
+
+Modified the hwInit function to clear all the pending interrupts.
+
+Signed-off-by: Girish K S <ks.giri@samsung.com>
+Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ drivers/spi/spi-s3c64xx.c |   41 +++++++++++++++++++++++++----------------
+ 1 file changed, 25 insertions(+), 16 deletions(-)
+
+--- a/drivers/spi/spi-s3c64xx.c
++++ b/drivers/spi/spi-s3c64xx.c
+@@ -889,25 +889,30 @@ static irqreturn_t s3c64xx_spi_irq(int i
+ {
+       struct s3c64xx_spi_driver_data *sdd = data;
+       struct spi_master *spi = sdd->master;
+-      unsigned int val;
+-
+-      val = readl(sdd->regs + S3C64XX_SPI_PENDING_CLR);
+-
+-      val &= S3C64XX_SPI_PND_RX_OVERRUN_CLR |
+-              S3C64XX_SPI_PND_RX_UNDERRUN_CLR |
+-              S3C64XX_SPI_PND_TX_OVERRUN_CLR |
+-              S3C64XX_SPI_PND_TX_UNDERRUN_CLR;
++      unsigned int val, clr = 0;
+-      writel(val, sdd->regs + S3C64XX_SPI_PENDING_CLR);
++      val = readl(sdd->regs + S3C64XX_SPI_STATUS);
+-      if (val & S3C64XX_SPI_PND_RX_OVERRUN_CLR)
++      if (val & S3C64XX_SPI_ST_RX_OVERRUN_ERR) {
++              clr = S3C64XX_SPI_PND_RX_OVERRUN_CLR;
+               dev_err(&spi->dev, "RX overrun\n");
+-      if (val & S3C64XX_SPI_PND_RX_UNDERRUN_CLR)
++      }
++      if (val & S3C64XX_SPI_ST_RX_UNDERRUN_ERR) {
++              clr |= S3C64XX_SPI_PND_RX_UNDERRUN_CLR;
+               dev_err(&spi->dev, "RX underrun\n");
+-      if (val & S3C64XX_SPI_PND_TX_OVERRUN_CLR)
++      }
++      if (val & S3C64XX_SPI_ST_TX_OVERRUN_ERR) {
++              clr |= S3C64XX_SPI_PND_TX_OVERRUN_CLR;
+               dev_err(&spi->dev, "TX overrun\n");
+-      if (val & S3C64XX_SPI_PND_TX_UNDERRUN_CLR)
++      }
++      if (val & S3C64XX_SPI_ST_TX_UNDERRUN_ERR) {
++              clr |= S3C64XX_SPI_PND_TX_UNDERRUN_CLR;
+               dev_err(&spi->dev, "TX underrun\n");
++      }
++
++      /* Clear the pending irq by setting and then clearing it */
++      writel(clr, sdd->regs + S3C64XX_SPI_PENDING_CLR);
++      writel(0, sdd->regs + S3C64XX_SPI_PENDING_CLR);
+       return IRQ_HANDLED;
+ }
+@@ -931,9 +936,13 @@ static void s3c64xx_spi_hwinit(struct s3
+       writel(0, regs + S3C64XX_SPI_MODE_CFG);
+       writel(0, regs + S3C64XX_SPI_PACKET_CNT);
+-      /* Clear any irq pending bits */
+-      writel(readl(regs + S3C64XX_SPI_PENDING_CLR),
+-                              regs + S3C64XX_SPI_PENDING_CLR);
++      /* Clear any irq pending bits, should set and clear the bits */
++      val = S3C64XX_SPI_PND_RX_OVERRUN_CLR |
++              S3C64XX_SPI_PND_RX_UNDERRUN_CLR |
++              S3C64XX_SPI_PND_TX_OVERRUN_CLR |
++              S3C64XX_SPI_PND_TX_UNDERRUN_CLR;
++      writel(val, regs + S3C64XX_SPI_PENDING_CLR);
++      writel(0, regs + S3C64XX_SPI_PENDING_CLR);
+       writel(0, regs + S3C64XX_SPI_SWAP_CFG);
diff --git a/queue-3.4/ubifs-make-space-fixup-work-in-the-remount-case.patch b/queue-3.4/ubifs-make-space-fixup-work-in-the-remount-case.patch
new file mode 100644 (file)
index 0000000..c733037
--- /dev/null
@@ -0,0 +1,66 @@
+From 67e753ca41782913d805ff4a8a2b0f60b26b7915 Mon Sep 17 00:00:00 2001
+From: Artem Bityutskiy <artem.bityutskiy@linux.intel.com>
+Date: Thu, 14 Mar 2013 10:49:23 +0200
+Subject: UBIFS: make space fixup work in the remount case
+
+From: Artem Bityutskiy <artem.bityutskiy@linux.intel.com>
+
+commit 67e753ca41782913d805ff4a8a2b0f60b26b7915 upstream.
+
+The UBIFS space fixup is a useful feature which allows to fixup the "broken"
+flash space at the time of the first mount. The "broken" space is usually the
+result of using a "dumb" industrial flasher which is not able to skip empty
+NAND pages and just writes all 0xFFs to the empty space, which has grave
+side-effects for UBIFS when UBIFS trise to write useful data to those empty
+pages.
+
+The fix-up feature works roughly like this:
+1. mkfs.ubifs sets the fixup flag in UBIFS superblock when creating the image
+   (see -F option)
+2. when the file-system is mounted for the first time, UBIFS notices the fixup
+   flag and re-writes the entire media atomically, which may take really a lot
+   of time.
+3. UBIFS clears the fixup flag in the superblock.
+
+This works fine when the file system is mounted R/W for the very first time.
+But it did not really work in the case when we first mount the file-system R/O,
+and then re-mount R/W. The reason was that we started the fixup procedure too
+late, which we cannot really do because we have to fixup the space before it
+starts being used.
+
+Signed-off-by: Artem Bityutskiy <artem.bityutskiy@linux.intel.com>
+Reported-by: Mark Jackson <mpfj-list@mimc.co.uk>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ fs/ubifs/super.c |   12 ++++++------
+ 1 file changed, 6 insertions(+), 6 deletions(-)
+
+--- a/fs/ubifs/super.c
++++ b/fs/ubifs/super.c
+@@ -1582,6 +1582,12 @@ static int ubifs_remount_rw(struct ubifs
+       c->remounting_rw = 1;
+       c->ro_mount = 0;
++      if (c->space_fixup) {
++              err = ubifs_fixup_free_space(c);
++              if (err)
++                      return err;
++      }
++
+       err = check_free_space(c);
+       if (err)
+               goto out;
+@@ -1698,12 +1704,6 @@ static int ubifs_remount_rw(struct ubifs
+               err = dbg_check_space_info(c);
+       }
+-      if (c->space_fixup) {
+-              err = ubifs_fixup_free_space(c);
+-              if (err)
+-                      goto out;
+-      }
+-
+       mutex_unlock(&c->umount_mutex);
+       return err;