From: Greg Kroah-Hartman Date: Thu, 22 Dec 2011 20:56:15 +0000 (-0800) Subject: 3.1 patches X-Git-Tag: v3.0.15~5 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=c93e188b86fa07a75f818b582619e6132ec27f54;p=thirdparty%2Fkernel%2Fstable-queue.git 3.1 patches added patches: ath9k-fix-max-phy-rate-at-rate-control-init.patch cgroups-fix-a-css_set-not-found-bug-in-cgroup_attach_proc.patch iwlwifi-allow-to-switch-to-ht40-if-not-associated.patch iwlwifi-do-not-set-the-sequence-control-bit-is-not-needed.patch media-omap_vout-fix-compile-error-in-3.1.patch media-s5p-fimc-use-correct-fourcc-for-rgb565-colour-format.patch mfd-fix-twl-core-oops-while-calling-twl_i2c_-for-unbound-driver.patch mmc-vub300-fix-type-of-firmware_rom_wait_states-module-parameter.patch nilfs2-unbreak-compat-ioctl.patch vfs-__read_cache_page-should-use-gfp-argument-rather-than-gfp_kernel.patch --- diff --git a/queue-3.1/ath9k-fix-max-phy-rate-at-rate-control-init.patch b/queue-3.1/ath9k-fix-max-phy-rate-at-rate-control-init.patch new file mode 100644 index 00000000000..b77a1c1ffcb --- /dev/null +++ b/queue-3.1/ath9k-fix-max-phy-rate-at-rate-control-init.patch @@ -0,0 +1,37 @@ +From 10636bc2d60942254bda149827b922c41f4cb4af Mon Sep 17 00:00:00 2001 +From: Rajkumar Manoharan +Date: Sat, 10 Dec 2011 18:59:43 +0530 +Subject: ath9k: fix max phy rate at rate control init + +From: Rajkumar Manoharan + +commit 10636bc2d60942254bda149827b922c41f4cb4af upstream. + +The stations always chooses 1Mbps for all trasmitting frames, +whenever the AP is configured to lock the supported rates. +As the max phy rate is always set with the 4th from highest phy rate, +this assumption might be wrong if we have less than that. Fix that. + +Cc: Paul Stewart +Reported-by: Ajay Gummalla +Signed-off-by: Rajkumar Manoharan +Signed-off-by: John W. Linville +Signed-off-by: Greg Kroah-Hartman + +--- + drivers/net/wireless/ath/ath9k/rc.c | 4 +++- + 1 file changed, 3 insertions(+), 1 deletion(-) + +--- a/drivers/net/wireless/ath/ath9k/rc.c ++++ b/drivers/net/wireless/ath/ath9k/rc.c +@@ -1250,7 +1250,9 @@ static void ath_rc_init(struct ath_softc + + ath_rc_priv->max_valid_rate = k; + ath_rc_sort_validrates(rate_table, ath_rc_priv); +- ath_rc_priv->rate_max_phy = ath_rc_priv->valid_rate_index[k-4]; ++ ath_rc_priv->rate_max_phy = (k > 4) ? ++ ath_rc_priv->valid_rate_index[k-4] : ++ ath_rc_priv->valid_rate_index[k-1]; + ath_rc_priv->rate_table = rate_table; + + ath_dbg(common, ATH_DBG_CONFIG, diff --git a/queue-3.1/cgroups-fix-a-css_set-not-found-bug-in-cgroup_attach_proc.patch b/queue-3.1/cgroups-fix-a-css_set-not-found-bug-in-cgroup_attach_proc.patch new file mode 100644 index 00000000000..5584872d5aa --- /dev/null +++ b/queue-3.1/cgroups-fix-a-css_set-not-found-bug-in-cgroup_attach_proc.patch @@ -0,0 +1,69 @@ +From e0197aae59e55c06db172bfbe1a1cdb8c0e1cab3 Mon Sep 17 00:00:00 2001 +From: Mandeep Singh Baines +Date: Thu, 15 Dec 2011 11:36:43 -0800 +Subject: cgroups: fix a css_set not found bug in cgroup_attach_proc + +From: Mandeep Singh Baines + +commit e0197aae59e55c06db172bfbe1a1cdb8c0e1cab3 upstream. + +There is a BUG when migrating a PF_EXITING proc. Since css_set_prefetch() +is not called for the PF_EXITING case, find_existing_css_set() will return +NULL inside cgroup_task_migrate() causing a BUG. + +This bug is easy to reproduce. Create a zombie and echo its pid to +cgroup.procs. + +$ cat zombie.c +\#include + +int main() +{ + if (fork()) + pause(); + return 0; +} +$ + +We are hitting this bug pretty regularly on ChromeOS. + +This bug is already fixed by Tejun Heo's cgroup patchset which is +targetted for the next merge window: + +https://lkml.org/lkml/2011/11/1/356 + +I've create a smaller patch here which just fixes this bug so that a +fix can be merged into the current release and stable. + +Signed-off-by: Mandeep Singh Baines +Downstream-Bug-Report: http://crosbug.com/23953 +Reviewed-by: Li Zefan +Signed-off-by: Tejun Heo +Cc: containers@lists.linux-foundation.org +Cc: cgroups@vger.kernel.org +Cc: KAMEZAWA Hiroyuki +Cc: Frederic Weisbecker +Cc: Oleg Nesterov +Cc: Andrew Morton +Cc: Paul Menage +Cc: Olof Johansson +Signed-off-by: Greg Kroah-Hartman + +--- + kernel/cgroup.c | 5 ----- + 1 file changed, 5 deletions(-) + +--- a/kernel/cgroup.c ++++ b/kernel/cgroup.c +@@ -2098,11 +2098,6 @@ int cgroup_attach_proc(struct cgroup *cg + continue; + /* get old css_set pointer */ + task_lock(tsk); +- if (tsk->flags & PF_EXITING) { +- /* ignore this task if it's going away */ +- task_unlock(tsk); +- continue; +- } + oldcg = tsk->cgroups; + get_css_set(oldcg); + task_unlock(tsk); diff --git a/queue-3.1/iwlwifi-allow-to-switch-to-ht40-if-not-associated.patch b/queue-3.1/iwlwifi-allow-to-switch-to-ht40-if-not-associated.patch new file mode 100644 index 00000000000..0e627cd3523 --- /dev/null +++ b/queue-3.1/iwlwifi-allow-to-switch-to-ht40-if-not-associated.patch @@ -0,0 +1,40 @@ +From 78feb35b8161acd95c33a703ed6ab6f554d29387 Mon Sep 17 00:00:00 2001 +From: Wey-Yi Guy +Date: Wed, 14 Dec 2011 08:22:36 -0800 +Subject: iwlwifi: allow to switch to HT40 if not associated + +From: Wey-Yi Guy + +commit 78feb35b8161acd95c33a703ed6ab6f554d29387 upstream. + +My previous patch +34a5b4b6af104cf18eb50748509528b9bdbc4036 iwlwifi: do not re-configure +HT40 after associated + +Fix the case of HT40 after association on specified AP, but it break the +association for some APs and cause not able to establish connection. +We need to address HT40 before and after addociation. + +Reported-by: Andrej Gelenberg +Signed-off-by: Wey-Yi Guy +Tested-by: Andrej Gelenberg +Signed-off-by: John W. Linville +Signed-off-by: Greg Kroah-Hartman + +--- + drivers/net/wireless/iwlwifi/iwl-agn-rxon.c | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +--- a/drivers/net/wireless/iwlwifi/iwl-agn-rxon.c ++++ b/drivers/net/wireless/iwlwifi/iwl-agn-rxon.c +@@ -620,8 +620,8 @@ int iwlagn_mac_config(struct ieee80211_h + if (ctx->ht.enabled) { + /* if HT40 is used, it should not change + * after associated except channel switch */ +- if (iwl_is_associated_ctx(ctx) && +- !ctx->ht.is_40mhz) ++ if (!ctx->ht.is_40mhz || ++ !iwl_is_associated_ctx(ctx)) + iwlagn_config_ht40(conf, ctx); + } else + ctx->ht.is_40mhz = false; diff --git a/queue-3.1/iwlwifi-do-not-set-the-sequence-control-bit-is-not-needed.patch b/queue-3.1/iwlwifi-do-not-set-the-sequence-control-bit-is-not-needed.patch new file mode 100644 index 00000000000..d19f21ecc86 --- /dev/null +++ b/queue-3.1/iwlwifi-do-not-set-the-sequence-control-bit-is-not-needed.patch @@ -0,0 +1,36 @@ +From 123877b80ed62c3b897c53357b622574c023b642 Mon Sep 17 00:00:00 2001 +From: Wey-Yi Guy +Date: Thu, 8 Dec 2011 15:52:00 -0800 +Subject: iwlwifi: do not set the sequence control bit is not needed + +From: Wey-Yi Guy + +commit 123877b80ed62c3b897c53357b622574c023b642 upstream. + +Check the IEEE80211_TX_CTL_ASSIGN_SEQ flag from mac80211, then decide how to +set the TX_CMD_FLG_SEQ_CTL_MSK bit. Setting the wrong bit in BAR frame whill +make the firmware to increment the sequence number which is incorrect and +cause unknown behavior. + +Signed-off-by: Wey-Yi Guy +Signed-off-by: John W. Linville +Signed-off-by: Greg Kroah-Hartman + +--- + drivers/net/wireless/iwlwifi/iwl-agn-tx.c | 5 ++++- + 1 file changed, 4 insertions(+), 1 deletion(-) + +--- a/drivers/net/wireless/iwlwifi/iwl-agn-tx.c ++++ b/drivers/net/wireless/iwlwifi/iwl-agn-tx.c +@@ -166,7 +166,10 @@ static void iwlagn_tx_cmd_build_basic(st + tx_cmd->tid_tspec = qc[0] & 0xf; + tx_flags &= ~TX_CMD_FLG_SEQ_CTL_MSK; + } else { +- tx_flags |= TX_CMD_FLG_SEQ_CTL_MSK; ++ if (info->flags & IEEE80211_TX_CTL_ASSIGN_SEQ) ++ tx_flags |= TX_CMD_FLG_SEQ_CTL_MSK; ++ else ++ tx_flags &= ~TX_CMD_FLG_SEQ_CTL_MSK; + } + + iwlagn_tx_cmd_protection(priv, info, fc, &tx_flags); diff --git a/queue-3.1/media-omap_vout-fix-compile-error-in-3.1.patch b/queue-3.1/media-omap_vout-fix-compile-error-in-3.1.patch new file mode 100644 index 00000000000..b7485b287c6 --- /dev/null +++ b/queue-3.1/media-omap_vout-fix-compile-error-in-3.1.patch @@ -0,0 +1,31 @@ +From d1ee8878a142f81ea1b40d602c6360b752829437 Mon Sep 17 00:00:00 2001 +From: Gary Thomas +Date: Thu, 1 Dec 2011 08:51:09 -0300 +Subject: media: omap_vout: Fix compile error in 3.1 + +From: Gary Thomas + +commit d1ee8878a142f81ea1b40d602c6360b752829437 upstream. + +This patch is against the mainline v3.1 release (c3b92c8) and +fixes a compile error when building for OMAP3+DSS+VOUT + +Acked-by: Laurent Pinchart +Signed-off-by: Gary Thomas +Signed-off-by: Mauro Carvalho Chehab +Signed-off-by: Greg Kroah-Hartman + +--- + drivers/media/video/omap/omap_vout.c | 1 + + 1 file changed, 1 insertion(+) + +--- a/drivers/media/video/omap/omap_vout.c ++++ b/drivers/media/video/omap/omap_vout.c +@@ -38,6 +38,7 @@ + #include + #include + #include ++#include + + #include + #include diff --git a/queue-3.1/media-s5p-fimc-use-correct-fourcc-for-rgb565-colour-format.patch b/queue-3.1/media-s5p-fimc-use-correct-fourcc-for-rgb565-colour-format.patch new file mode 100644 index 00000000000..a08ad965555 --- /dev/null +++ b/queue-3.1/media-s5p-fimc-use-correct-fourcc-for-rgb565-colour-format.patch @@ -0,0 +1,41 @@ +From f83f71fda27650ae43558633be93652577dbc38c Mon Sep 17 00:00:00 2001 +From: Sylwester Nawrocki +Date: Fri, 4 Nov 2011 10:07:06 -0300 +Subject: media: s5p-fimc: Use correct fourcc for RGB565 colour format + +From: Sylwester Nawrocki + +commit f83f71fda27650ae43558633be93652577dbc38c upstream. + +With 16-bit RGB565 colour format pixels are stored by the device in memory +in the following order: + + | b3 | b2 | b1 | b0 | + ~+-----+-----+-----+-----+ + | R5 G6 B5 | R5 G6 B5 | + +This corresponds to V4L2_PIX_FMT_RGB565 fourcc, not V4L2_PIX_FMT_RGB565X. +This change is required to avoid trouble when setting up video pipeline +with the s5p-tv devices, so the colour formats at both devices can be +properly matched. + +Signed-off-by: Sylwester Nawrocki +Signed-off-by: Kyungmin Park +Signed-off-by: Mauro Carvalho Chehab +Signed-off-by: Greg Kroah-Hartman + +--- + drivers/media/video/s5p-fimc/fimc-core.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +--- a/drivers/media/video/s5p-fimc/fimc-core.c ++++ b/drivers/media/video/s5p-fimc/fimc-core.c +@@ -35,7 +35,7 @@ static char *fimc_clocks[MAX_FIMC_CLOCKS + static struct fimc_fmt fimc_formats[] = { + { + .name = "RGB565", +- .fourcc = V4L2_PIX_FMT_RGB565X, ++ .fourcc = V4L2_PIX_FMT_RGB565, + .depth = { 16 }, + .color = S5P_FIMC_RGB565, + .memplanes = 1, diff --git a/queue-3.1/mfd-fix-twl-core-oops-while-calling-twl_i2c_-for-unbound-driver.patch b/queue-3.1/mfd-fix-twl-core-oops-while-calling-twl_i2c_-for-unbound-driver.patch new file mode 100644 index 00000000000..f1359621e6e --- /dev/null +++ b/queue-3.1/mfd-fix-twl-core-oops-while-calling-twl_i2c_-for-unbound-driver.patch @@ -0,0 +1,58 @@ +From 8653be1afd60d6e8c36139b487e375b70357d9ef Mon Sep 17 00:00:00 2001 +From: Ilya Yanok +Date: Mon, 1 Aug 2011 23:00:28 +0200 +Subject: mfd: Fix twl-core oops while calling twl_i2c_* for unbound driver + +From: Ilya Yanok + +commit 8653be1afd60d6e8c36139b487e375b70357d9ef upstream. + +Check inuse variable before trying to access twl_map to prevent +dereferencing of uninitialized variable. + +Signed-off-by: Ilya Yanok +Signed-off-by: Samuel Ortiz +Signed-off-by: Greg Kroah-Hartman + +--- + drivers/mfd/twl-core.c | 16 ++++++++-------- + 1 file changed, 8 insertions(+), 8 deletions(-) + +--- a/drivers/mfd/twl-core.c ++++ b/drivers/mfd/twl-core.c +@@ -362,13 +362,13 @@ int twl_i2c_write(u8 mod_no, u8 *value, + pr_err("%s: invalid module number %d\n", DRIVER_NAME, mod_no); + return -EPERM; + } +- sid = twl_map[mod_no].sid; +- twl = &twl_modules[sid]; +- + if (unlikely(!inuse)) { +- pr_err("%s: client %d is not initialized\n", DRIVER_NAME, sid); ++ pr_err("%s: not initialized\n", DRIVER_NAME); + return -EPERM; + } ++ sid = twl_map[mod_no].sid; ++ twl = &twl_modules[sid]; ++ + mutex_lock(&twl->xfer_lock); + /* + * [MSG1]: fill the register address data +@@ -419,13 +419,13 @@ int twl_i2c_read(u8 mod_no, u8 *value, u + pr_err("%s: invalid module number %d\n", DRIVER_NAME, mod_no); + return -EPERM; + } +- sid = twl_map[mod_no].sid; +- twl = &twl_modules[sid]; +- + if (unlikely(!inuse)) { +- pr_err("%s: client %d is not initialized\n", DRIVER_NAME, sid); ++ pr_err("%s: not initialized\n", DRIVER_NAME); + return -EPERM; + } ++ sid = twl_map[mod_no].sid; ++ twl = &twl_modules[sid]; ++ + mutex_lock(&twl->xfer_lock); + /* [MSG1] fill the register address data */ + msg = &twl->xfer_msg[0]; diff --git a/queue-3.1/mmc-vub300-fix-type-of-firmware_rom_wait_states-module-parameter.patch b/queue-3.1/mmc-vub300-fix-type-of-firmware_rom_wait_states-module-parameter.patch new file mode 100644 index 00000000000..dde021bcee4 --- /dev/null +++ b/queue-3.1/mmc-vub300-fix-type-of-firmware_rom_wait_states-module-parameter.patch @@ -0,0 +1,31 @@ +From 61074287c2965edf0fc75b54ae8f4ce99f182669 Mon Sep 17 00:00:00 2001 +From: Rusty Russell +Date: Thu, 15 Dec 2011 13:34:50 +1030 +Subject: mmc: vub300: fix type of firmware_rom_wait_states module parameter + +From: Rusty Russell + +commit 61074287c2965edf0fc75b54ae8f4ce99f182669 upstream. + +You didn't mean this to be a bool. + +Signed-off-by: Rusty Russell +Acked-by: Tony Olech +Signed-off-by: Chris Ball +Signed-off-by: Greg Kroah-Hartman + +--- + drivers/mmc/host/vub300.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +--- a/drivers/mmc/host/vub300.c ++++ b/drivers/mmc/host/vub300.c +@@ -259,7 +259,7 @@ static int firmware_rom_wait_states = 0x + static int firmware_rom_wait_states = 0x1C; + #endif + +-module_param(firmware_rom_wait_states, bool, 0644); ++module_param(firmware_rom_wait_states, int, 0644); + MODULE_PARM_DESC(firmware_rom_wait_states, + "ROM wait states byte=RRRIIEEE (Reserved Internal External)"); + diff --git a/queue-3.1/nilfs2-unbreak-compat-ioctl.patch b/queue-3.1/nilfs2-unbreak-compat-ioctl.patch new file mode 100644 index 00000000000..0e0d88a1f3e --- /dev/null +++ b/queue-3.1/nilfs2-unbreak-compat-ioctl.patch @@ -0,0 +1,45 @@ +From 695c60f21c69e525a89279a5f35bae4ff237afbc Mon Sep 17 00:00:00 2001 +From: Thomas Meyer +Date: Mon, 19 Dec 2011 17:11:55 -0800 +Subject: nilfs2: unbreak compat ioctl + +From: Thomas Meyer + +commit 695c60f21c69e525a89279a5f35bae4ff237afbc upstream. + +commit 828b1c50ae ("nilfs2: add compat ioctl") incidentally broke all +other NILFS compat ioctls. Make them work again. + +Signed-off-by: Thomas Meyer +Signed-off-by: Ryusuke Konishi +Tested-by: Ryusuke Konishi +Signed-off-by: Andrew Morton +Signed-off-by: Linus Torvalds +Signed-off-by: Greg Kroah-Hartman + +--- + fs/nilfs2/ioctl.c | 13 +++++++++++++ + 1 file changed, 13 insertions(+) + +--- a/fs/nilfs2/ioctl.c ++++ b/fs/nilfs2/ioctl.c +@@ -842,6 +842,19 @@ long nilfs_compat_ioctl(struct file *fil + case FS_IOC32_GETVERSION: + cmd = FS_IOC_GETVERSION; + break; ++ case NILFS_IOCTL_CHANGE_CPMODE: ++ case NILFS_IOCTL_DELETE_CHECKPOINT: ++ case NILFS_IOCTL_GET_CPINFO: ++ case NILFS_IOCTL_GET_CPSTAT: ++ case NILFS_IOCTL_GET_SUINFO: ++ case NILFS_IOCTL_GET_SUSTAT: ++ case NILFS_IOCTL_GET_VINFO: ++ case NILFS_IOCTL_GET_BDESCS: ++ case NILFS_IOCTL_CLEAN_SEGMENTS: ++ case NILFS_IOCTL_SYNC: ++ case NILFS_IOCTL_RESIZE: ++ case NILFS_IOCTL_SET_ALLOC_RANGE: ++ break; + default: + return -ENOIOCTLCMD; + } diff --git a/queue-3.1/series b/queue-3.1/series index 70ef70c1e44..40deebd9593 100644 --- a/queue-3.1/series +++ b/queue-3.1/series @@ -26,3 +26,13 @@ sunrpc-ensure-we-always-bump-the-backlog-queue-in-xprt_free_slot.patch nfs-fix-a-regression-in-nfs_file_llseek.patch nfsv4.1-ensure-that-we-handle-_all_-sequence-status-bits.patch selinux-fix-rcu-deref-check-warning-in-sel_netport_insert.patch +media-omap_vout-fix-compile-error-in-3.1.patch +nilfs2-unbreak-compat-ioctl.patch +mmc-vub300-fix-type-of-firmware_rom_wait_states-module-parameter.patch +cgroups-fix-a-css_set-not-found-bug-in-cgroup_attach_proc.patch +mfd-fix-twl-core-oops-while-calling-twl_i2c_-for-unbound-driver.patch +vfs-__read_cache_page-should-use-gfp-argument-rather-than-gfp_kernel.patch +media-s5p-fimc-use-correct-fourcc-for-rgb565-colour-format.patch +ath9k-fix-max-phy-rate-at-rate-control-init.patch +iwlwifi-do-not-set-the-sequence-control-bit-is-not-needed.patch +iwlwifi-allow-to-switch-to-ht40-if-not-associated.patch diff --git a/queue-3.1/vfs-__read_cache_page-should-use-gfp-argument-rather-than-gfp_kernel.patch b/queue-3.1/vfs-__read_cache_page-should-use-gfp-argument-rather-than-gfp_kernel.patch new file mode 100644 index 00000000000..353cb959cf7 --- /dev/null +++ b/queue-3.1/vfs-__read_cache_page-should-use-gfp-argument-rather-than-gfp_kernel.patch @@ -0,0 +1,46 @@ +From e6f67b8c05f5e129e126f4409ddac6f25f58ffcb Mon Sep 17 00:00:00 2001 +From: Dave Kleikamp +Date: Wed, 21 Dec 2011 11:05:48 -0600 +Subject: vfs: __read_cache_page should use gfp argument rather than GFP_KERNEL + +From: Dave Kleikamp + +commit e6f67b8c05f5e129e126f4409ddac6f25f58ffcb upstream. + +lockdep reports a deadlock in jfs because a special inode's rw semaphore +is taken recursively. The mapping's gfp mask is GFP_NOFS, but is not +used when __read_cache_page() calls add_to_page_cache_lru(). + +Signed-off-by: Dave Kleikamp +Acked-by: Hugh Dickins +Acked-by: Al Viro +Signed-off-by: Linus Torvalds +Signed-off-by: Greg Kroah-Hartman + +--- + mm/filemap.c | 7 ++----- + 1 file changed, 2 insertions(+), 5 deletions(-) + +--- a/mm/filemap.c ++++ b/mm/filemap.c +@@ -1828,7 +1828,7 @@ repeat: + page = __page_cache_alloc(gfp | __GFP_COLD); + if (!page) + return ERR_PTR(-ENOMEM); +- err = add_to_page_cache_lru(page, mapping, index, GFP_KERNEL); ++ err = add_to_page_cache_lru(page, mapping, index, gfp); + if (unlikely(err)) { + page_cache_release(page); + if (err == -EEXIST) +@@ -1925,10 +1925,7 @@ static struct page *wait_on_page_read(st + * @gfp: the page allocator flags to use if allocating + * + * This is the same as "read_mapping_page(mapping, index, NULL)", but with +- * any new page allocations done using the specified allocation flags. Note +- * that the Radix tree operations will still use GFP_KERNEL, so you can't +- * expect to do this atomically or anything like that - but you can pass in +- * other page requirements. ++ * any new page allocations done using the specified allocation flags. + * + * If the page does not get brought uptodate, return -EIO. + */