From: Greg Kroah-Hartman Date: Tue, 15 Feb 2011 19:40:47 +0000 (-0800) Subject: .36 patches X-Git-Tag: v2.6.36.4~18 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=1151f6ef604bb21273754c7ceaf5a46ef049dd7c;p=thirdparty%2Fkernel%2Fstable-queue.git .36 patches --- diff --git a/queue-2.6.36/dm-dont-take-i_mutex-to-change-device-size.patch b/queue-2.6.36/dm-dont-take-i_mutex-to-change-device-size.patch new file mode 100644 index 00000000000..2c2b9e56c99 --- /dev/null +++ b/queue-2.6.36/dm-dont-take-i_mutex-to-change-device-size.patch @@ -0,0 +1,49 @@ +From c217649bf2d60ac119afd71d938278cffd55962b Mon Sep 17 00:00:00 2001 +From: Mike Snitzer +Date: Thu, 13 Jan 2011 19:53:46 +0000 +Subject: dm: dont take i_mutex to change device size + +From: Mike Snitzer + +commit c217649bf2d60ac119afd71d938278cffd55962b upstream. + +No longer needlessly hold md->bdev->bd_inode->i_mutex when changing the +size of a DM device. This additional locking is unnecessary because +i_size_write() is already protected by the existing critical section in +dm_swap_table(). DM already has a reference on md->bdev so the +associated bd_inode may be changed without lifetime concerns. + +A negative side-effect of having held md->bdev->bd_inode->i_mutex was +that a concurrent DM device resize and flush (via fsync) would deadlock. +Dropping md->bdev->bd_inode->i_mutex eliminates this potential for +deadlock. The following reproducer no longer deadlocks: + https://www.redhat.com/archives/dm-devel/2009-July/msg00284.html + +Signed-off-by: Mike Snitzer +Signed-off-by: Mikulas Patocka +Signed-off-by: Alasdair G Kergon +Signed-off-by: Greg Kroah-Hartman + +--- + drivers/md/dm.c | 5 +++-- + 1 file changed, 3 insertions(+), 2 deletions(-) + +--- a/drivers/md/dm.c ++++ b/drivers/md/dm.c +@@ -2111,13 +2111,14 @@ static void event_callback(void *context + wake_up(&md->eventq); + } + ++/* ++ * Protected by md->suspend_lock obtained by dm_swap_table(). ++ */ + static void __set_size(struct mapped_device *md, sector_t size) + { + set_capacity(md->disk, size); + +- mutex_lock(&md->bdev->bd_inode->i_mutex); + i_size_write(md->bdev->bd_inode, (loff_t)size << SECTOR_SHIFT); +- mutex_unlock(&md->bdev->bd_inode->i_mutex); + } + + /* diff --git a/queue-2.6.36/dm-mpath-disable-blk_abort_queue.patch b/queue-2.6.36/dm-mpath-disable-blk_abort_queue.patch new file mode 100644 index 00000000000..182c7b0d536 --- /dev/null +++ b/queue-2.6.36/dm-mpath-disable-blk_abort_queue.patch @@ -0,0 +1,81 @@ +From 09c9d4c9b6a2b5909ae3c6265e4cd3820b636863 Mon Sep 17 00:00:00 2001 +From: Mike Snitzer +Date: Thu, 13 Jan 2011 19:59:46 +0000 +Subject: dm mpath: disable blk_abort_queue + +From: Mike Snitzer + +commit 09c9d4c9b6a2b5909ae3c6265e4cd3820b636863 upstream. + +Revert commit 224cb3e981f1b2f9f93dbd49eaef505d17d894c2 + dm: Call blk_abort_queue on failed paths + +Multipath began to use blk_abort_queue() to allow for +lower latency path deactivation. This was found to +cause list corruption: + + the cmd gets blk_abort_queued/timedout run on it and the scsi eh + somehow is able to complete and run scsi_queue_insert while + scsi_request_fn is still trying to process the request. + + https://www.redhat.com/archives/dm-devel/2010-November/msg00085.html + +Signed-off-by: Mike Snitzer +Signed-off-by: Alasdair G Kergon +Cc: Mike Anderson +Cc: Mike Christie +Signed-off-by: Greg Kroah-Hartman + +--- + drivers/md/dm-mpath.c | 12 ------------ + 1 file changed, 12 deletions(-) + +--- a/drivers/md/dm-mpath.c ++++ b/drivers/md/dm-mpath.c +@@ -33,7 +33,6 @@ struct pgpath { + unsigned fail_count; /* Cumulative failure count */ + + struct dm_path path; +- struct work_struct deactivate_path; + struct work_struct activate_path; + }; + +@@ -116,7 +115,6 @@ static struct workqueue_struct *kmultipa + static void process_queued_ios(struct work_struct *work); + static void trigger_event(struct work_struct *work); + static void activate_path(struct work_struct *work); +-static void deactivate_path(struct work_struct *work); + + + /*----------------------------------------------- +@@ -129,7 +127,6 @@ static struct pgpath *alloc_pgpath(void) + + if (pgpath) { + pgpath->is_active = 1; +- INIT_WORK(&pgpath->deactivate_path, deactivate_path); + INIT_WORK(&pgpath->activate_path, activate_path); + } + +@@ -141,14 +138,6 @@ static void free_pgpath(struct pgpath *p + kfree(pgpath); + } + +-static void deactivate_path(struct work_struct *work) +-{ +- struct pgpath *pgpath = +- container_of(work, struct pgpath, deactivate_path); +- +- blk_abort_queue(pgpath->path.dev->bdev->bd_disk->queue); +-} +- + static struct priority_group *alloc_priority_group(void) + { + struct priority_group *pg; +@@ -995,7 +984,6 @@ static int fail_path(struct pgpath *pgpa + pgpath->path.dev->name, m->nr_valid_paths); + + schedule_work(&m->trigger_event); +- queue_work(kmultipathd, &pgpath->deactivate_path); + + out: + spin_unlock_irqrestore(&m->lock, flags); diff --git a/queue-2.6.36/ieee80211-correct-ieee80211_addba_param_buf_size_mask-macro.patch b/queue-2.6.36/ieee80211-correct-ieee80211_addba_param_buf_size_mask-macro.patch new file mode 100644 index 00000000000..463732c4551 --- /dev/null +++ b/queue-2.6.36/ieee80211-correct-ieee80211_addba_param_buf_size_mask-macro.patch @@ -0,0 +1,34 @@ +From 8d661f1e462d50bd83de87ee628aaf820ce3c66c Mon Sep 17 00:00:00 2001 +From: Amitkumar Karwar +Date: Tue, 11 Jan 2011 16:14:24 -0800 +Subject: ieee80211: correct IEEE80211_ADDBA_PARAM_BUF_SIZE_MASK macro + +From: Amitkumar Karwar + +commit 8d661f1e462d50bd83de87ee628aaf820ce3c66c upstream. + +It is defined in include/linux/ieee80211.h. As per IEEE spec. +bit6 to bit15 in block ack parameter represents buffer size. +So the bitmask should be 0xFFC0. + +Signed-off-by: Amitkumar Karwar +Signed-off-by: Bing Zhao +Reviewed-by: Johannes Berg +Signed-off-by: John W. Linville +Signed-off-by: Greg Kroah-Hartman + +--- + include/linux/ieee80211.h | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +--- a/include/linux/ieee80211.h ++++ b/include/linux/ieee80211.h +@@ -959,7 +959,7 @@ struct ieee80211_ht_info { + /* block-ack parameters */ + #define IEEE80211_ADDBA_PARAM_POLICY_MASK 0x0002 + #define IEEE80211_ADDBA_PARAM_TID_MASK 0x003C +-#define IEEE80211_ADDBA_PARAM_BUF_SIZE_MASK 0xFFA0 ++#define IEEE80211_ADDBA_PARAM_BUF_SIZE_MASK 0xFFC0 + #define IEEE80211_DELBA_PARAM_TID_MASK 0xF000 + #define IEEE80211_DELBA_PARAM_INITIATOR_MASK 0x0800 + diff --git a/queue-2.6.36/net-fec-fix-mmfr_op-type-in-fec_enet_mdio_write.patch b/queue-2.6.36/net-fec-fix-mmfr_op-type-in-fec_enet_mdio_write.patch new file mode 100644 index 00000000000..6ff28a82f56 --- /dev/null +++ b/queue-2.6.36/net-fec-fix-mmfr_op-type-in-fec_enet_mdio_write.patch @@ -0,0 +1,38 @@ +From 862f0982eadcea0e114576c57ea426d3d51a69a6 Mon Sep 17 00:00:00 2001 +From: Shawn Guo +Date: Wed, 5 Jan 2011 21:13:09 +0000 +Subject: net/fec: fix MMFR_OP type in fec_enet_mdio_write + +From: Shawn Guo + +commit 862f0982eadcea0e114576c57ea426d3d51a69a6 upstream. + +FEC_MMFR_OP_WRITE should be used than FEC_MMFR_OP_READ in +a mdio write operation. + +It's probably a typo introduced by commit: + +e6b043d512fa8d9a3801bf5d72bfa3b8fc3b3cc8 +netdev/fec.c: add phylib supporting to enable carrier detection (v2) + +Signed-off-by: Shawn Guo +Signed-off-by: David S. Miller +Signed-off-by: Greg Kroah-Hartman + +--- + drivers/net/fec.c | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +--- a/drivers/net/fec.c ++++ b/drivers/net/fec.c +@@ -651,8 +651,8 @@ static int fec_enet_mdio_write(struct mi + fep->mii_timeout = 0; + init_completion(&fep->mdio_done); + +- /* start a read op */ +- writel(FEC_MMFR_ST | FEC_MMFR_OP_READ | ++ /* start a write op */ ++ writel(FEC_MMFR_ST | FEC_MMFR_OP_WRITE | + FEC_MMFR_PA(mii_id) | FEC_MMFR_RA(regnum) | + FEC_MMFR_TA | FEC_MMFR_DATA(value), + fep->hwp + FEC_MII_DATA); diff --git a/queue-2.6.36/series b/queue-2.6.36/series index 1431fbc69e1..748bd4c26ed 100644 --- a/queue-2.6.36/series +++ b/queue-2.6.36/series @@ -152,3 +152,7 @@ keys-don-t-call-up_write-if-__key_link_begin-returns-an-error.patch selinux-define-permissions-for-dcb-netlink-messages.patch selinux-do-not-compute-transition-labels-on-mountpoint-labeled-filesystems.patch tpm-autodetect-itpm-devices.patch +ieee80211-correct-ieee80211_addba_param_buf_size_mask-macro.patch +dm-dont-take-i_mutex-to-change-device-size.patch +dm-mpath-disable-blk_abort_queue.patch +net-fec-fix-mmfr_op-type-in-fec_enet_mdio_write.patch