From: Greg Kroah-Hartman Date: Mon, 19 Apr 2010 22:20:02 +0000 (-0700) Subject: .32 patches X-Git-Tag: v2.6.32.12~26 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=8529108823b3fb196d3e469cd89d3e22a821b9ea;p=thirdparty%2Fkernel%2Fstable-queue.git .32 patches Also delete a wireless patch that broke the .32 build --- diff --git a/queue-2.6.32/9p-skip-check-for-mandatory-locks-when-unlocking.patch b/queue-2.6.32/9p-skip-check-for-mandatory-locks-when-unlocking.patch new file mode 100644 index 00000000000..ed22a0e53e4 --- /dev/null +++ b/queue-2.6.32/9p-skip-check-for-mandatory-locks-when-unlocking.patch @@ -0,0 +1,42 @@ +From f78233dd44a110c574fe760ad6f9c1e8741a0d00 Mon Sep 17 00:00:00 2001 +From: Sachin Prabhu +Date: Sat, 13 Mar 2010 09:03:55 -0600 +Subject: 9p: Skip check for mandatory locks when unlocking + +From: Sachin Prabhu + +commit f78233dd44a110c574fe760ad6f9c1e8741a0d00 upstream. + +While investigating a bug, I came across a possible bug in v9fs. The +problem is similar to the one reported for NFS by ASANO Masahiro in +http://lkml.org/lkml/2005/12/21/334. + +v9fs_file_lock() will skip locks on file which has mode set to 02666. +This is a problem in cases where the mode of the file is changed after +a process has obtained a lock on the file. Such a lock will be skipped +during unlock and the machine will end up with a BUG in +locks_remove_flock(). + +v9fs_file_lock() should skip the check for mandatory locks when +unlocking a file. + +Signed-off-by: Sachin Prabhu +Signed-off-by: Eric Van Hensbergen +Cc: maximilian attems +Signed-off-by: Greg Kroah-Hartman + +--- + fs/9p/vfs_file.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +--- a/fs/9p/vfs_file.c ++++ b/fs/9p/vfs_file.c +@@ -114,7 +114,7 @@ static int v9fs_file_lock(struct file *f + P9_DPRINTK(P9_DEBUG_VFS, "filp: %p lock: %p\n", filp, fl); + + /* No mandatory locks */ +- if (__mandatory_lock(inode)) ++ if (__mandatory_lock(inode) && fl->fl_type != F_UNLCK) + return -ENOLCK; + + if ((IS_SETLK(cmd) || IS_SETLKW(cmd)) && fl->fl_type != F_UNLCK) { diff --git a/queue-2.6.32/fc-class-fail-fast-bsg-requests.patch b/queue-2.6.32/fc-class-fail-fast-bsg-requests.patch new file mode 100644 index 00000000000..cf87f2fc54a --- /dev/null +++ b/queue-2.6.32/fc-class-fail-fast-bsg-requests.patch @@ -0,0 +1,40 @@ +From 2bc1c59dbdefdb6f9767e06efb86bbdb2923a8be Mon Sep 17 00:00:00 2001 +From: Mike Christie +Date: Thu, 5 Nov 2009 11:18:09 -0600 +Subject: [SCSI] fc class: fail fast bsg requests + +From: Mike Christie + +commit 2bc1c59dbdefdb6f9767e06efb86bbdb2923a8be upstream. + +If the port state is blocked and the fast io fail tmo has +fired then this patch will fail bsg requests immediately. +This is needed if userspace is sending IOs to test the transport +like with fcping, so it will not have to wait for the dev loss tmo. +With this patch he bsg req fast io fail code behaves like the normal +and sg io/passthrough fast io fail. + +Signed-off-by: Mike Christie +Acked-By: James Smart +Signed-off-by: James Bottomley +Cc: maximilian attems +Signed-off-by: Greg Kroah-Hartman + +--- + drivers/scsi/scsi_transport_fc.c | 5 +++-- + 1 file changed, 3 insertions(+), 2 deletions(-) + +--- a/drivers/scsi/scsi_transport_fc.c ++++ b/drivers/scsi/scsi_transport_fc.c +@@ -3796,8 +3796,9 @@ fc_bsg_request_handler(struct request_qu + return; + + while (!blk_queue_plugged(q)) { +- if (rport && (rport->port_state == FC_PORTSTATE_BLOCKED)) +- break; ++ if (rport && (rport->port_state == FC_PORTSTATE_BLOCKED) && ++ !(rport->flags & FC_RPORT_FAST_FAIL_TIMEDOUT)) ++ break; + + req = blk_fetch_request(q); + if (!req) diff --git a/queue-2.6.32/igb-add-support-for-82576ns-serdes-adapter.patch b/queue-2.6.32/igb-add-support-for-82576ns-serdes-adapter.patch new file mode 100644 index 00000000000..7cc44b11e6e --- /dev/null +++ b/queue-2.6.32/igb-add-support-for-82576ns-serdes-adapter.patch @@ -0,0 +1,54 @@ +From 747d49baaf4e3f4ad5ae77477830da026eeef69d Mon Sep 17 00:00:00 2001 +From: Alexander Duyck +Date: Mon, 5 Oct 2009 06:33:27 +0000 +Subject: igb: add support for 82576NS SerDes adapter + +From: Alexander Duyck + +commit 747d49baaf4e3f4ad5ae77477830da026eeef69d upstream. + +This patch adds the device ID necessary to support the 82576NS SerDes +adapter. + +Signed-off-by: Alexander Duyck +Signed-off-by: Jeff Kirsher +Signed-off-by: David S. Miller +Cc: maximilian attems +Signed-off-by: Greg Kroah-Hartman + +--- + drivers/net/igb/e1000_82575.c | 1 + + drivers/net/igb/e1000_hw.h | 1 + + drivers/net/igb/igb_main.c | 1 + + 3 files changed, 3 insertions(+) + +--- a/drivers/net/igb/e1000_82575.c ++++ b/drivers/net/igb/e1000_82575.c +@@ -81,6 +81,7 @@ static s32 igb_get_invariants_82575(stru + break; + case E1000_DEV_ID_82576: + case E1000_DEV_ID_82576_NS: ++ case E1000_DEV_ID_82576_NS_SERDES: + case E1000_DEV_ID_82576_FIBER: + case E1000_DEV_ID_82576_SERDES: + case E1000_DEV_ID_82576_QUAD_COPPER: +--- a/drivers/net/igb/e1000_hw.h ++++ b/drivers/net/igb/e1000_hw.h +@@ -42,6 +42,7 @@ struct e1000_hw; + #define E1000_DEV_ID_82576_SERDES 0x10E7 + #define E1000_DEV_ID_82576_QUAD_COPPER 0x10E8 + #define E1000_DEV_ID_82576_NS 0x150A ++#define E1000_DEV_ID_82576_NS_SERDES 0x1518 + #define E1000_DEV_ID_82576_SERDES_QUAD 0x150D + #define E1000_DEV_ID_82575EB_COPPER 0x10A7 + #define E1000_DEV_ID_82575EB_FIBER_SERDES 0x10A9 +--- a/drivers/net/igb/igb_main.c ++++ b/drivers/net/igb/igb_main.c +@@ -63,6 +63,7 @@ static const struct e1000_info *igb_info + static struct pci_device_id igb_pci_tbl[] = { + { PCI_VDEVICE(INTEL, E1000_DEV_ID_82576), board_82575 }, + { PCI_VDEVICE(INTEL, E1000_DEV_ID_82576_NS), board_82575 }, ++ { PCI_VDEVICE(INTEL, E1000_DEV_ID_82576_NS_SERDES), board_82575 }, + { PCI_VDEVICE(INTEL, E1000_DEV_ID_82576_FIBER), board_82575 }, + { PCI_VDEVICE(INTEL, E1000_DEV_ID_82576_SERDES), board_82575 }, + { PCI_VDEVICE(INTEL, E1000_DEV_ID_82576_SERDES_QUAD), board_82575 }, diff --git a/queue-2.6.32/mac80211-handle-mesh-action-frames-in-ieee80211_rx_h_action.patch b/queue-2.6.32/mac80211-handle-mesh-action-frames-in-ieee80211_rx_h_action.patch deleted file mode 100644 index 2360361a6e3..00000000000 --- a/queue-2.6.32/mac80211-handle-mesh-action-frames-in-ieee80211_rx_h_action.patch +++ /dev/null @@ -1,52 +0,0 @@ -From 1cb561f83793191cf86a2db3948d28f5f42df9ff Mon Sep 17 00:00:00 2001 -From: Javier Cardona -Date: Mon, 29 Mar 2010 11:00:20 -0700 -Subject: mac80211: Handle mesh action frames in ieee80211_rx_h_action - -From: Javier Cardona - -commit 1cb561f83793191cf86a2db3948d28f5f42df9ff upstream. - -This fixes the problem introduced in commit -8404080568613d93ad7cf0a16dfb68 which broke mesh peer link establishment. - -changes: -v2 Added missing break (Johannes) -v3 Broke original patch into two (Johannes) - -Signed-off-by: Javier Cardona -Reviewed-by: Johannes Berg -Signed-off-by: John W. Linville -Signed-off-by: Greg Kroah-Hartman - ---- - net/mac80211/mesh.c | 3 --- - net/mac80211/rx.c | 5 +++++ - 2 files changed, 5 insertions(+), 3 deletions(-) - ---- a/net/mac80211/mesh.c -+++ b/net/mac80211/mesh.c -@@ -704,9 +704,6 @@ ieee80211_mesh_rx_mgmt(struct ieee80211_ - - switch (fc & IEEE80211_FCTL_STYPE) { - case IEEE80211_STYPE_ACTION: -- if (skb->len < IEEE80211_MIN_ACTION_SIZE) -- return RX_DROP_MONITOR; -- /* fall through */ - case IEEE80211_STYPE_PROBE_RESP: - case IEEE80211_STYPE_BEACON: - skb_queue_tail(&ifmsh->skb_queue, skb); ---- a/net/mac80211/rx.c -+++ b/net/mac80211/rx.c -@@ -2038,6 +2038,11 @@ static void ieee80211_invoke_rx_handlers - case RX_QUEUED: - I802_DEBUG_INC(sdata->local->rx_handlers_queued); - break; -+ case MESH_PLINK_CATEGORY: -+ case MESH_PATH_SEL_CATEGORY: -+ if (ieee80211_vif_is_mesh(&sdata->vif)) -+ return ieee80211_mesh_rx_mgmt(sdata, rx->skb); -+ break; - } - } - diff --git a/queue-2.6.32/ocfs2-change-bg_chain-check-for-ocfs2_validate_gd_parent.patch b/queue-2.6.32/ocfs2-change-bg_chain-check-for-ocfs2_validate_gd_parent.patch new file mode 100644 index 00000000000..617ea19ca00 --- /dev/null +++ b/queue-2.6.32/ocfs2-change-bg_chain-check-for-ocfs2_validate_gd_parent.patch @@ -0,0 +1,73 @@ +From 78c37eb0d5e6a9727b12ea0f1821795ffaa66cfe Mon Sep 17 00:00:00 2001 +From: Tao Ma +Date: Wed, 3 Mar 2010 11:26:27 +0800 +Subject: ocfs2: Change bg_chain check for ocfs2_validate_gd_parent. + +From: Tao Ma + +commit 78c37eb0d5e6a9727b12ea0f1821795ffaa66cfe upstream. + +In ocfs2_validate_gd_parent, we check bg_chain against the +cl_next_free_rec of the dinode. Actually in resize, we have +the chance of bg_chain == cl_next_free_rec. So add some +additional condition check for it. + +I also rename paramter "clean_error" to "resize", since the +old one is not clearly enough to indicate that we should only +meet with this case in resize. + +btw, the correpsonding bug is +http://oss.oracle.com/bugzilla/show_bug.cgi?id=1230. + +Signed-off-by: Tao Ma +Signed-off-by: Joel Becker +Cc: maximilian attems +Signed-off-by: Greg Kroah-Hartman + +--- + fs/ocfs2/suballoc.c | 13 ++++++++----- + 1 file changed, 8 insertions(+), 5 deletions(-) + +--- a/fs/ocfs2/suballoc.c ++++ b/fs/ocfs2/suballoc.c +@@ -152,7 +152,7 @@ static u32 ocfs2_bits_per_group(struct o + + #define do_error(fmt, ...) \ + do{ \ +- if (clean_error) \ ++ if (resize) \ + mlog(ML_ERROR, fmt "\n", ##__VA_ARGS__); \ + else \ + ocfs2_error(sb, fmt, ##__VA_ARGS__); \ +@@ -160,7 +160,7 @@ static u32 ocfs2_bits_per_group(struct o + + static int ocfs2_validate_gd_self(struct super_block *sb, + struct buffer_head *bh, +- int clean_error) ++ int resize) + { + struct ocfs2_group_desc *gd = (struct ocfs2_group_desc *)bh->b_data; + +@@ -211,7 +211,7 @@ static int ocfs2_validate_gd_self(struct + static int ocfs2_validate_gd_parent(struct super_block *sb, + struct ocfs2_dinode *di, + struct buffer_head *bh, +- int clean_error) ++ int resize) + { + unsigned int max_bits; + struct ocfs2_group_desc *gd = (struct ocfs2_group_desc *)bh->b_data; +@@ -233,8 +233,11 @@ static int ocfs2_validate_gd_parent(stru + return -EINVAL; + } + +- if (le16_to_cpu(gd->bg_chain) >= +- le16_to_cpu(di->id2.i_chain.cl_next_free_rec)) { ++ /* In resize, we may meet the case bg_chain == cl_next_free_rec. */ ++ if ((le16_to_cpu(gd->bg_chain) > ++ le16_to_cpu(di->id2.i_chain.cl_next_free_rec)) || ++ ((le16_to_cpu(gd->bg_chain) == ++ le16_to_cpu(di->id2.i_chain.cl_next_free_rec)) && !resize)) { + do_error("Group descriptor #%llu has bad chain %u", + (unsigned long long)bh->b_blocknr, + le16_to_cpu(gd->bg_chain)); diff --git a/queue-2.6.32/ocfs2-set-i_mode-on-disk-during-acl-operations.patch b/queue-2.6.32/ocfs2-set-i_mode-on-disk-during-acl-operations.patch new file mode 100644 index 00000000000..bf6d620179a --- /dev/null +++ b/queue-2.6.32/ocfs2-set-i_mode-on-disk-during-acl-operations.patch @@ -0,0 +1,151 @@ +From fcefd25ac89239cb57fa198f125a79ff85468c75 Mon Sep 17 00:00:00 2001 +From: Mark Fasheh +Date: Mon, 15 Mar 2010 15:39:00 -0700 +Subject: ocfs2: set i_mode on disk during acl operations + +From: Mark Fasheh + +commit fcefd25ac89239cb57fa198f125a79ff85468c75 upstream. + +ocfs2_set_acl() and ocfs2_init_acl() were setting i_mode on the in-memory +inode, but never setting it on the disk copy. Thus, acls were some times not +getting propagated between nodes. This patch fixes the issue by adding a +helper function ocfs2_acl_set_mode() which does this the right way. +ocfs2_set_acl() and ocfs2_init_acl() are then updated to call +ocfs2_acl_set_mode(). + +Signed-off-by: Mark Fasheh +Signed-off-by: Joel Becker +Cc: maximilian attems +Signed-off-by: Greg Kroah-Hartman + +--- + fs/ocfs2/acl.c | 77 +++++++++++++++++++++++++++++++++++++++++++++++++++++---- + 1 file changed, 72 insertions(+), 5 deletions(-) + +--- a/fs/ocfs2/acl.c ++++ b/fs/ocfs2/acl.c +@@ -30,6 +30,8 @@ + #include "alloc.h" + #include "dlmglue.h" + #include "file.h" ++#include "inode.h" ++#include "journal.h" + #include "ocfs2_fs.h" + + #include "xattr.h" +@@ -170,6 +172,60 @@ static struct posix_acl *ocfs2_get_acl(s + } + + /* ++ * Helper function to set i_mode in memory and disk. Some call paths ++ * will not have di_bh or a journal handle to pass, in which case it ++ * will create it's own. ++ */ ++static int ocfs2_acl_set_mode(struct inode *inode, struct buffer_head *di_bh, ++ handle_t *handle, umode_t new_mode) ++{ ++ int ret, commit_handle = 0; ++ struct ocfs2_dinode *di; ++ ++ if (di_bh == NULL) { ++ ret = ocfs2_read_inode_block(inode, &di_bh); ++ if (ret) { ++ mlog_errno(ret); ++ goto out; ++ } ++ } else ++ get_bh(di_bh); ++ ++ if (handle == NULL) { ++ handle = ocfs2_start_trans(OCFS2_SB(inode->i_sb), ++ OCFS2_INODE_UPDATE_CREDITS); ++ if (IS_ERR(handle)) { ++ ret = PTR_ERR(handle); ++ mlog_errno(ret); ++ goto out_brelse; ++ } ++ ++ commit_handle = 1; ++ } ++ ++ di = (struct ocfs2_dinode *)di_bh->b_data; ++ ret = ocfs2_journal_access_di(handle, INODE_CACHE(inode), di_bh, ++ OCFS2_JOURNAL_ACCESS_WRITE); ++ if (ret) { ++ mlog_errno(ret); ++ goto out_commit; ++ } ++ ++ inode->i_mode = new_mode; ++ di->i_mode = cpu_to_le16(inode->i_mode); ++ ++ ocfs2_journal_dirty(handle, di_bh); ++ ++out_commit: ++ if (commit_handle) ++ ocfs2_commit_trans(OCFS2_SB(inode->i_sb), handle); ++out_brelse: ++ brelse(di_bh); ++out: ++ return ret; ++} ++ ++/* + * Set the access or default ACL of an inode. + */ + static int ocfs2_set_acl(handle_t *handle, +@@ -197,9 +253,14 @@ static int ocfs2_set_acl(handle_t *handl + if (ret < 0) + return ret; + else { +- inode->i_mode = mode; + if (ret == 0) + acl = NULL; ++ ++ ret = ocfs2_acl_set_mode(inode, di_bh, ++ handle, mode); ++ if (ret) ++ return ret; ++ + } + } + break; +@@ -287,6 +348,7 @@ int ocfs2_init_acl(handle_t *handle, + struct ocfs2_super *osb = OCFS2_SB(inode->i_sb); + struct posix_acl *acl = NULL; + int ret = 0; ++ mode_t mode; + + if (!S_ISLNK(inode->i_mode)) { + if (osb->s_mount_opt & OCFS2_MOUNT_POSIX_ACL) { +@@ -295,12 +357,17 @@ int ocfs2_init_acl(handle_t *handle, + if (IS_ERR(acl)) + return PTR_ERR(acl); + } +- if (!acl) +- inode->i_mode &= ~current_umask(); ++ if (!acl) { ++ mode = inode->i_mode & ~current_umask(); ++ ret = ocfs2_acl_set_mode(inode, di_bh, handle, mode); ++ if (ret) { ++ mlog_errno(ret); ++ goto cleanup; ++ } ++ } + } + if ((osb->s_mount_opt & OCFS2_MOUNT_POSIX_ACL) && acl) { + struct posix_acl *clone; +- mode_t mode; + + if (S_ISDIR(inode->i_mode)) { + ret = ocfs2_set_acl(handle, inode, di_bh, +@@ -317,7 +384,7 @@ int ocfs2_init_acl(handle_t *handle, + mode = inode->i_mode; + ret = posix_acl_create_masq(clone, &mode); + if (ret >= 0) { +- inode->i_mode = mode; ++ ret = ocfs2_acl_set_mode(inode, di_bh, handle, mode); + if (ret > 0) { + ret = ocfs2_set_acl(handle, inode, + di_bh, ACL_TYPE_ACCESS, diff --git a/queue-2.6.32/pcie-aer-prevent-aer-injection-if-hardware-masks-error-reporting.patch b/queue-2.6.32/pcie-aer-prevent-aer-injection-if-hardware-masks-error-reporting.patch new file mode 100644 index 00000000000..891baf71101 --- /dev/null +++ b/queue-2.6.32/pcie-aer-prevent-aer-injection-if-hardware-masks-error-reporting.patch @@ -0,0 +1,63 @@ +From b49bfd32901625e4adcfee011d2b32a43b4db67d Mon Sep 17 00:00:00 2001 +From: Youquan,Song +Date: Thu, 17 Dec 2009 08:22:48 -0500 +Subject: PCIe AER: prevent AER injection if hardware masks error reporting + +From: Youquan,Song + +commit b49bfd32901625e4adcfee011d2b32a43b4db67d upstream. + +The Correcteable/Uncorrectable Error Mask Registers are used by PCIe AER +driver which will controls the reporting of individual errors to PCIe RC +via PCIe error messages. + +If hardware masks special error reporting to RC, the aer_inject driver +should not inject aer error. + +Acked-by: Andi Kleen +Signed-off-by: Youquan, Song +Acked-by: Ying, Huang +Signed-off-by: Jesse Barnes +Cc: maximilian attems +Signed-off-by: Greg Kroah-Hartman + +--- + drivers/pci/pcie/aer/aer_inject.c | 20 +++++++++++++++++++- + 1 file changed, 19 insertions(+), 1 deletion(-) + +--- a/drivers/pci/pcie/aer/aer_inject.c ++++ b/drivers/pci/pcie/aer/aer_inject.c +@@ -302,7 +302,7 @@ static int aer_inject(struct aer_error_i + unsigned long flags; + unsigned int devfn = PCI_DEVFN(einj->dev, einj->fn); + int pos_cap_err, rp_pos_cap_err; +- u32 sever; ++ u32 sever, mask; + int ret = 0; + + dev = pci_get_bus_and_slot(einj->bus, devfn); +@@ -354,6 +354,24 @@ static int aer_inject(struct aer_error_i + err->header_log2 = einj->header_log2; + err->header_log3 = einj->header_log3; + ++ pci_read_config_dword(dev, pos_cap_err + PCI_ERR_COR_MASK, &mask); ++ if (einj->cor_status && !(einj->cor_status & ~mask)) { ++ ret = -EINVAL; ++ printk(KERN_WARNING "The correctable error(s) is masked " ++ "by device\n"); ++ spin_unlock_irqrestore(&inject_lock, flags); ++ goto out_put; ++ } ++ ++ pci_read_config_dword(dev, pos_cap_err + PCI_ERR_UNCOR_MASK, &mask); ++ if (einj->uncor_status && !(einj->uncor_status & ~mask)) { ++ ret = -EINVAL; ++ printk(KERN_WARNING "The uncorrectable error(s) is masked " ++ "by device\n"); ++ spin_unlock_irqrestore(&inject_lock, flags); ++ goto out_put; ++ } ++ + rperr = __find_aer_error_by_dev(rpdev); + if (!rperr) { + rperr = rperr_alloc; diff --git a/queue-2.6.32/scsi-add-scsi-target-reset-support-to-scsi-ioctl.patch b/queue-2.6.32/scsi-add-scsi-target-reset-support-to-scsi-ioctl.patch new file mode 100644 index 00000000000..523c353d9d2 --- /dev/null +++ b/queue-2.6.32/scsi-add-scsi-target-reset-support-to-scsi-ioctl.patch @@ -0,0 +1,33 @@ +From 3f9daedfcb197d784c6e7ecd731e3aa9859bc951 Mon Sep 17 00:00:00 2001 +From: Mike Christie +Date: Thu, 5 Nov 2009 11:37:28 -0600 +Subject: SCSI: add scsi target reset support to scsi ioctl + +From: Mike Christie + +commit 3f9daedfcb197d784c6e7ecd731e3aa9859bc951 upstream. + +The scsi ioctl code path was missing scsi target reset +support. This patch just adds it. + +Signed-off-by: Mike Christie +Signed-off-by: James Bottomley +Cc: maximilian attems +Signed-off-by: Greg Kroah-Hartman + +--- + drivers/scsi/scsi_ioctl.c | 3 +++ + 1 file changed, 3 insertions(+) + +--- a/drivers/scsi/scsi_ioctl.c ++++ b/drivers/scsi/scsi_ioctl.c +@@ -308,6 +308,9 @@ int scsi_nonblockable_ioctl(struct scsi_ + case SG_SCSI_RESET_DEVICE: + val = SCSI_TRY_RESET_DEVICE; + break; ++ case SG_SCSI_RESET_TARGET: ++ val = SCSI_TRY_RESET_TARGET; ++ break; + case SG_SCSI_RESET_BUS: + val = SCSI_TRY_RESET_BUS; + break; diff --git a/queue-2.6.32/scsi-fc-transport-use-packed-modifier-for-fc_bsg_request-structure.patch b/queue-2.6.32/scsi-fc-transport-use-packed-modifier-for-fc_bsg_request-structure.patch new file mode 100644 index 00000000000..f8369b9a722 --- /dev/null +++ b/queue-2.6.32/scsi-fc-transport-use-packed-modifier-for-fc_bsg_request-structure.patch @@ -0,0 +1,33 @@ +From eda05a28ec52be40086400a1b606d211276f0e41 Mon Sep 17 00:00:00 2001 +From: Harish Zunjarrao +Date: Tue, 12 Jan 2010 12:59:50 -0800 +Subject: SCSI: fc-transport: Use packed modifier for fc_bsg_request structure. + +From: Harish Zunjarrao + +commit eda05a28ec52be40086400a1b606d211276f0e41 upstream. + +The 32bit kernel does not add padding bytes in the fc_bsg_request structure +whereas the 64bit kernel adds padding bytes in the fc_bsg_request structure. +Due to this, structure elements gets mismatched with 32bit application and +64bit kernel.To resolve this, used packed modifier to avoid adding padding bytes. +Signed-off-by: Giridhar Malavali +Signed-off-by: James Bottomley +Cc: maximilian attems +Signed-off-by: Greg Kroah-Hartman + +--- + include/scsi/scsi_bsg_fc.h | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +--- a/include/scsi/scsi_bsg_fc.h ++++ b/include/scsi/scsi_bsg_fc.h +@@ -292,7 +292,7 @@ struct fc_bsg_request { + struct fc_bsg_rport_els r_els; + struct fc_bsg_rport_ct r_ct; + } rqst_data; +-}; ++} __attribute__((packed)); + + + /* response (request sense data) structure of the sg_io_v4 */ diff --git a/queue-2.6.32/series b/queue-2.6.32/series index 361f176488a..a201a4e5e9c 100644 --- a/queue-2.6.32/series +++ b/queue-2.6.32/series @@ -82,7 +82,6 @@ libata-disable-ncq-on-crucial-c300-ssd.patch cifs-fix-a-kernel-bug-with-remote-os-2-server-try-3.patch cifs-initialize-nbytes-at-the-beginning-of-cifssmbwrite.patch iwlwifi-need-check-for-valid-qos-packet-before-free.patch -mac80211-handle-mesh-action-frames-in-ieee80211_rx_h_action.patch arm-6031-1-fix-thumb-2-decompressor.patch drm-edid-quirks-envision-en2028.patch drm-radeon-r300-ad-only-has-one-quad-pipe.patch @@ -127,3 +126,12 @@ dm-mpath-fix-stall-when-requeueing-io.patch quota-fix-possible-dq_flags-corruption.patch staging-comedi-fix-usbdux-timeout-bug.patch staging-comedi-usbdux.c-fix-locking-up-of-the-driver-when-the-comedi-ringbuffer-runs-empty.patch +ocfs2-set-i_mode-on-disk-during-acl-operations.patch +ocfs2-change-bg_chain-check-for-ocfs2_validate_gd_parent.patch +9p-skip-check-for-mandatory-locks-when-unlocking.patch +fc-class-fail-fast-bsg-requests.patch +scsi-add-scsi-target-reset-support-to-scsi-ioctl.patch +igb-add-support-for-82576ns-serdes-adapter.patch +pcie-aer-prevent-aer-injection-if-hardware-masks-error-reporting.patch +vgaarb-fix-vga-arbiter-to-accept-pci-domains-other-than-0.patch +scsi-fc-transport-use-packed-modifier-for-fc_bsg_request-structure.patch diff --git a/queue-2.6.32/vgaarb-fix-vga-arbiter-to-accept-pci-domains-other-than-0.patch b/queue-2.6.32/vgaarb-fix-vga-arbiter-to-accept-pci-domains-other-than-0.patch new file mode 100644 index 00000000000..af1d7b35a13 --- /dev/null +++ b/queue-2.6.32/vgaarb-fix-vga-arbiter-to-accept-pci-domains-other-than-0.patch @@ -0,0 +1,83 @@ +From 773a38dbdad03474c5ee235f7d9bf9f51c9e3c2b Mon Sep 17 00:00:00 2001 +From: Mike Travis +Date: Tue, 2 Feb 2010 14:38:15 -0800 +Subject: vgaarb: Fix VGA arbiter to accept PCI domains other than 0 + +From: Mike Travis + +commit 773a38dbdad03474c5ee235f7d9bf9f51c9e3c2b upstream. + +Update the VGA Arbiter to accept PCI Domains other than 0. + +Signed-off-by: Mike Travis +LKML-Reference: <201002022238.o12McFe8018730@imap1.linux-foundation.org> +Cc: Thomas Gleixner +Cc: Robin Holt +Cc: Jack Steiner +Cc: Ingo Molnar +Cc: Jesse Barnes +Cc: David Airlie +Signed-off-by: Andrew Morton +Signed-off-by: H. Peter Anvin +Cc: maximilian attems +Signed-off-by: Greg Kroah-Hartman + +--- + drivers/gpu/vga/vgaarb.c | 23 +++++++++++++++++++---- + 1 file changed, 19 insertions(+), 4 deletions(-) + +--- a/drivers/gpu/vga/vgaarb.c ++++ b/drivers/gpu/vga/vgaarb.c +@@ -954,6 +954,7 @@ static ssize_t vga_arb_write(struct file + } + + } else if (strncmp(curr_pos, "target ", 7) == 0) { ++ struct pci_bus *pbus; + unsigned int domain, bus, devfn; + struct vga_device *vgadev; + +@@ -969,18 +970,31 @@ static ssize_t vga_arb_write(struct file + ret_val = -EPROTO; + goto done; + } ++ pr_devel("vgaarb: %s ==> %x:%x:%x.%x\n", curr_pos, ++ domain, bus, PCI_SLOT(devfn), PCI_FUNC(devfn)); + +- pdev = pci_get_bus_and_slot(bus, devfn); ++ pbus = pci_find_bus(domain, bus); ++ pr_devel("vgaarb: pbus %p\n", pbus); ++ if (pbus == NULL) { ++ pr_err("vgaarb: invalid PCI domain and/or bus address %x:%x\n", ++ domain, bus); ++ ret_val = -ENODEV; ++ goto done; ++ } ++ pdev = pci_get_slot(pbus, devfn); ++ pr_devel("vgaarb: pdev %p\n", pdev); + if (!pdev) { +- pr_info("vgaarb: invalid PCI address!\n"); ++ pr_err("vgaarb: invalid PCI address %x:%x\n", ++ bus, devfn); + ret_val = -ENODEV; + goto done; + } + } + + vgadev = vgadev_find(pdev); ++ pr_devel("vgaarb: vgadev %p\n", vgadev); + if (vgadev == NULL) { +- pr_info("vgaarb: this pci device is not a vga device\n"); ++ pr_err("vgaarb: this pci device is not a vga device\n"); + pci_dev_put(pdev); + ret_val = -ENODEV; + goto done; +@@ -998,7 +1012,8 @@ static ssize_t vga_arb_write(struct file + } + } + if (i == MAX_USER_CARDS) { +- pr_err("vgaarb: maximum user cards number reached!\n"); ++ pr_err("vgaarb: maximum user cards (%d) number reached!\n", ++ MAX_USER_CARDS); + pci_dev_put(pdev); + /* XXX: which value to return? */ + ret_val = -ENOMEM;