From 10d8f961cdfd0c2a78e85569425ccc60983d19de Mon Sep 17 00:00:00 2001 From: Greg Kroah-Hartman Date: Tue, 21 Feb 2012 12:03:17 -0800 Subject: 2.6.32-stable patches added patches: crypto-sha512-use-standard-ror64.patch drm-radeon-kms-fix-msi-re-arm-on-rv370.patch ecryptfs-read-on-a-directory-should-return-eisdir-if-not-supported.patch scsi-3w-9xxx-fix-bug-in-sgl-loading.patch --- .../crypto-sha512-use-standard-ror64.patch | 86 ++++++++++++++++++++++ .../drm-radeon-kms-fix-msi-re-arm-on-rv370.patch | 50 +++++++++++++ ...ory-should-return-eisdir-if-not-supported.patch | 38 ++++++++++ .../scsi-3w-9xxx-fix-bug-in-sgl-loading.patch | 56 ++++++++++++++ queue-2.6.32/series | 4 + 5 files changed, 234 insertions(+) create mode 100644 queue-2.6.32/crypto-sha512-use-standard-ror64.patch create mode 100644 queue-2.6.32/drm-radeon-kms-fix-msi-re-arm-on-rv370.patch create mode 100644 queue-2.6.32/ecryptfs-read-on-a-directory-should-return-eisdir-if-not-supported.patch create mode 100644 queue-2.6.32/scsi-3w-9xxx-fix-bug-in-sgl-loading.patch diff --git a/queue-2.6.32/crypto-sha512-use-standard-ror64.patch b/queue-2.6.32/crypto-sha512-use-standard-ror64.patch new file mode 100644 index 0000000..7c6ad3b --- /dev/null +++ b/queue-2.6.32/crypto-sha512-use-standard-ror64.patch @@ -0,0 +1,86 @@ +From f2ea0f5f04c97b48c88edccba52b0682fbe45087 Mon Sep 17 00:00:00 2001 +From: Alexey Dobriyan +Date: Sat, 14 Jan 2012 21:44:49 +0300 +Subject: crypto: sha512 - use standard ror64() + +From: Alexey Dobriyan + +commit f2ea0f5f04c97b48c88edccba52b0682fbe45087 upstream. + +Use standard ror64() instead of hand-written. +There is no standard ror64, so create it. + +The difference is shift value being "unsigned int" instead of uint64_t +(for which there is no reason). gcc starts to emit native ROR instructions +which it doesn't do for some reason currently. This should make the code +faster. + +Patch survives in-tree crypto test and ping flood with hmac(sha512) on. + +Signed-off-by: Alexey Dobriyan +Signed-off-by: Herbert Xu +Signed-off-by: Greg Kroah-Hartman + +--- + crypto/sha512_generic.c | 13 ++++--------- + include/linux/bitops.h | 20 ++++++++++++++++++++ + 2 files changed, 24 insertions(+), 9 deletions(-) + +--- a/crypto/sha512_generic.c ++++ b/crypto/sha512_generic.c +@@ -31,11 +31,6 @@ static inline u64 Maj(u64 x, u64 y, u64 + return (x & y) | (z & (x | y)); + } + +-static inline u64 RORu64(u64 x, u64 y) +-{ +- return (x >> y) | (x << (64 - y)); +-} +- + static const u64 sha512_K[80] = { + 0x428a2f98d728ae22ULL, 0x7137449123ef65cdULL, 0xb5c0fbcfec4d3b2fULL, + 0xe9b5dba58189dbbcULL, 0x3956c25bf348b538ULL, 0x59f111f1b605d019ULL, +@@ -66,10 +61,10 @@ static const u64 sha512_K[80] = { + 0x5fcb6fab3ad6faecULL, 0x6c44198c4a475817ULL, + }; + +-#define e0(x) (RORu64(x,28) ^ RORu64(x,34) ^ RORu64(x,39)) +-#define e1(x) (RORu64(x,14) ^ RORu64(x,18) ^ RORu64(x,41)) +-#define s0(x) (RORu64(x, 1) ^ RORu64(x, 8) ^ (x >> 7)) +-#define s1(x) (RORu64(x,19) ^ RORu64(x,61) ^ (x >> 6)) ++#define e0(x) (ror64(x,28) ^ ror64(x,34) ^ ror64(x,39)) ++#define e1(x) (ror64(x,14) ^ ror64(x,18) ^ ror64(x,41)) ++#define s0(x) (ror64(x, 1) ^ ror64(x, 8) ^ (x >> 7)) ++#define s1(x) (ror64(x,19) ^ ror64(x,61) ^ (x >> 6)) + + static inline void LOAD_OP(int I, u64 *W, const u8 *input) + { +--- a/include/linux/bitops.h ++++ b/include/linux/bitops.h +@@ -46,6 +46,26 @@ static inline unsigned long hweight_long + } + + /** ++ * rol64 - rotate a 64-bit value left ++ * @word: value to rotate ++ * @shift: bits to roll ++ */ ++static inline __u64 rol64(__u64 word, unsigned int shift) ++{ ++ return (word << shift) | (word >> (64 - shift)); ++} ++ ++/** ++ * ror64 - rotate a 64-bit value right ++ * @word: value to rotate ++ * @shift: bits to roll ++ */ ++static inline __u64 ror64(__u64 word, unsigned int shift) ++{ ++ return (word >> shift) | (word << (64 - shift)); ++} ++ ++/** + * rol32 - rotate a 32-bit value left + * @word: value to rotate + * @shift: bits to roll diff --git a/queue-2.6.32/drm-radeon-kms-fix-msi-re-arm-on-rv370.patch b/queue-2.6.32/drm-radeon-kms-fix-msi-re-arm-on-rv370.patch new file mode 100644 index 0000000..ca2dbaf --- /dev/null +++ b/queue-2.6.32/drm-radeon-kms-fix-msi-re-arm-on-rv370.patch @@ -0,0 +1,50 @@ +From b7f5b7dec3d539a84734f2bcb7e53fbb1532a40b Mon Sep 17 00:00:00 2001 +From: Alex Deucher +Date: Mon, 13 Feb 2012 16:36:34 -0500 +Subject: drm/radeon/kms: fix MSI re-arm on rv370+ + +From: Alex Deucher + +commit b7f5b7dec3d539a84734f2bcb7e53fbb1532a40b upstream. + +MSI_REARM_EN register is a write only trigger register. +There is no need RMW when re-arming. + +May fix: +https://bugs.freedesktop.org/show_bug.cgi?id=41668 + +Signed-off-by: Alex Deucher +Signed-off-by: Dave Airlie +Signed-off-by: Greg Kroah-Hartman + +--- + drivers/gpu/drm/radeon/r100.c | 4 +--- + drivers/gpu/drm/radeon/rs600.c | 4 +--- + 2 files changed, 2 insertions(+), 6 deletions(-) + +--- a/drivers/gpu/drm/radeon/r100.c ++++ b/drivers/gpu/drm/radeon/r100.c +@@ -218,9 +218,7 @@ int r100_irq_process(struct radeon_devic + WREG32(RADEON_AIC_CNTL, msi_rearm | RS400_MSI_REARM); + break; + default: +- msi_rearm = RREG32(RADEON_MSI_REARM_EN) & ~RV370_MSI_REARM_EN; +- WREG32(RADEON_MSI_REARM_EN, msi_rearm); +- WREG32(RADEON_MSI_REARM_EN, msi_rearm | RV370_MSI_REARM_EN); ++ WREG32(RADEON_MSI_REARM_EN, RV370_MSI_REARM_EN); + break; + } + } +--- a/drivers/gpu/drm/radeon/rs600.c ++++ b/drivers/gpu/drm/radeon/rs600.c +@@ -270,9 +270,7 @@ int rs600_irq_process(struct radeon_devi + WREG32(RADEON_BUS_CNTL, msi_rearm | RS600_MSI_REARM); + break; + default: +- msi_rearm = RREG32(RADEON_MSI_REARM_EN) & ~RV370_MSI_REARM_EN; +- WREG32(RADEON_MSI_REARM_EN, msi_rearm); +- WREG32(RADEON_MSI_REARM_EN, msi_rearm | RV370_MSI_REARM_EN); ++ WREG32(RADEON_MSI_REARM_EN, RV370_MSI_REARM_EN); + break; + } + } diff --git a/queue-2.6.32/ecryptfs-read-on-a-directory-should-return-eisdir-if-not-supported.patch b/queue-2.6.32/ecryptfs-read-on-a-directory-should-return-eisdir-if-not-supported.patch new file mode 100644 index 0000000..5c6e096 --- /dev/null +++ b/queue-2.6.32/ecryptfs-read-on-a-directory-should-return-eisdir-if-not-supported.patch @@ -0,0 +1,38 @@ +From 323ef68faf1bbd9b1e66aea268fd09d358d7e8ab Mon Sep 17 00:00:00 2001 +From: Andy Whitcroft +Date: Wed, 16 Feb 2011 04:49:59 +0000 +Subject: ecryptfs: read on a directory should return EISDIR if not supported + +From: Andy Whitcroft + +commit 323ef68faf1bbd9b1e66aea268fd09d358d7e8ab upstream. + +read() calls against a file descriptor connected to a directory are +incorrectly returning EINVAL rather than EISDIR: + + [EISDIR] + [XSI] [Option Start] The fildes argument refers to a directory and the + implementation does not allow the directory to be read using read() + or pread(). The readdir() function should be used instead. [Option End] + +This occurs because we do not have a .read operation defined for +ecryptfs directories. Connect this up to generic_read_dir(). + +BugLink: http://bugs.launchpad.net/bugs/719691 +Signed-off-by: Andy Whitcroft +Signed-off-by: Tyler Hicks + +--- + fs/ecryptfs/file.c | 1 + + 1 file changed, 1 insertion(+) + +--- a/fs/ecryptfs/file.c ++++ b/fs/ecryptfs/file.c +@@ -323,6 +323,7 @@ ecryptfs_compat_ioctl(struct file *file, + + const struct file_operations ecryptfs_dir_fops = { + .readdir = ecryptfs_readdir, ++ .read = generic_read_dir, + .unlocked_ioctl = ecryptfs_unlocked_ioctl, + #ifdef CONFIG_COMPAT + .compat_ioctl = ecryptfs_compat_ioctl, diff --git a/queue-2.6.32/scsi-3w-9xxx-fix-bug-in-sgl-loading.patch b/queue-2.6.32/scsi-3w-9xxx-fix-bug-in-sgl-loading.patch new file mode 100644 index 0000000..cef1052 --- /dev/null +++ b/queue-2.6.32/scsi-3w-9xxx-fix-bug-in-sgl-loading.patch @@ -0,0 +1,56 @@ +From 53ca353594a254e6bd45ccf2d405aa31bcbb7091 Mon Sep 17 00:00:00 2001 +From: adam radford +Date: Thu, 10 Dec 2009 11:53:31 -0800 +Subject: SCSI: 3w-9xxx fix bug in sgl loading + +From: adam radford + +commit 53ca353594a254e6bd45ccf2d405aa31bcbb7091 upstream. + +This small patch fixes a bug in the 3w-9xxx driver where it would load +an invalid sgl address in the ioctl path even if request length was zero. + +Signed-off-by: Adam Radford +Signed-off-by: James Bottomley +Cc: Ben Hutchings +Signed-off-by: Greg Kroah-Hartman + +--- + drivers/scsi/3w-9xxx.c | 11 +++++++---- + 1 file changed, 7 insertions(+), 4 deletions(-) + +--- a/drivers/scsi/3w-9xxx.c ++++ b/drivers/scsi/3w-9xxx.c +@@ -76,6 +76,7 @@ + Fix bug in twa_get_param() on 4GB+. + Use pci_resource_len() for ioremap(). + 2.26.02.012 - Add power management support. ++ 2.26.02.013 - Fix bug in twa_load_sgl(). + */ + + #include +@@ -100,7 +101,7 @@ + #include "3w-9xxx.h" + + /* Globals */ +-#define TW_DRIVER_VERSION "2.26.02.012" ++#define TW_DRIVER_VERSION "2.26.02.013" + static TW_Device_Extension *twa_device_extension_list[TW_MAX_SLOT]; + static unsigned int twa_device_extension_count; + static int twa_major = -1; +@@ -1378,10 +1379,12 @@ static void twa_load_sgl(TW_Device_Exten + newcommand = &full_command_packet->command.newcommand; + newcommand->request_id__lunl = + cpu_to_le16(TW_REQ_LUN_IN(TW_LUN_OUT(newcommand->request_id__lunl), request_id)); +- newcommand->sg_list[0].address = TW_CPU_TO_SGL(dma_handle + sizeof(TW_Ioctl_Buf_Apache) - 1); +- newcommand->sg_list[0].length = cpu_to_le32(length); ++ if (length) { ++ newcommand->sg_list[0].address = TW_CPU_TO_SGL(dma_handle + sizeof(TW_Ioctl_Buf_Apache) - 1); ++ newcommand->sg_list[0].length = cpu_to_le32(length); ++ } + newcommand->sgl_entries__lunh = +- cpu_to_le16(TW_REQ_LUN_IN(TW_LUN_OUT(newcommand->sgl_entries__lunh), 1)); ++ cpu_to_le16(TW_REQ_LUN_IN(TW_LUN_OUT(newcommand->sgl_entries__lunh), length ? 1 : 0)); + } else { + oldcommand = &full_command_packet->command.oldcommand; + oldcommand->request_id = request_id; diff --git a/queue-2.6.32/series b/queue-2.6.32/series index b22c78f..26686e6 100644 --- a/queue-2.6.32/series +++ b/queue-2.6.32/series @@ -11,3 +11,7 @@ crypto-sha512-avoid-stack-bloat-on-i386.patch ecryptfs-remove-mmap-from-directory-operations.patch ban-ecryptfs-over-ecryptfs.patch add-mount-option-to-check-uid-of-device-being-mounted-expect-uid-cve-2011-1833.patch +crypto-sha512-use-standard-ror64.patch +drm-radeon-kms-fix-msi-re-arm-on-rv370.patch +ecryptfs-read-on-a-directory-should-return-eisdir-if-not-supported.patch +scsi-3w-9xxx-fix-bug-in-sgl-loading.patch -- cgit 1.2.3-korg