[kernel] r16464 - in dists/sid/linux-2.6/debian: . patches/bugfix/all patches/series
Dann Frazier
dannf at alioth.debian.org
Tue Oct 19 19:27:37 UTC 2010
Author: dannf
Date: Tue Oct 19 19:27:33 2010
New Revision: 16464
Log:
RDS sockets: remove unsafe kmap_atomic optimization (CVE-2010-3904)
Added:
dists/sid/linux-2.6/debian/patches/bugfix/all/net-rds-remove-kmap_atomic-optimization.patch
Modified:
dists/sid/linux-2.6/debian/changelog
dists/sid/linux-2.6/debian/patches/series/26
Modified: dists/sid/linux-2.6/debian/changelog
==============================================================================
--- dists/sid/linux-2.6/debian/changelog Tue Oct 19 18:23:47 2010 (r16463)
+++ dists/sid/linux-2.6/debian/changelog Tue Oct 19 19:27:33 2010 (r16464)
@@ -26,6 +26,7 @@
[ dann frazier ]
* Force enable DMA on MBP w/ MCP 7,1
+ * RDS sockets: remove unsafe kmap_atomic optimization (CVE-2010-3904)
-- dann frazier <dannf at debian.org> Fri, 15 Oct 2010 16:03:12 +0100
Added: dists/sid/linux-2.6/debian/patches/bugfix/all/net-rds-remove-kmap_atomic-optimization.patch
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ dists/sid/linux-2.6/debian/patches/bugfix/all/net-rds-remove-kmap_atomic-optimization.patch Tue Oct 19 19:27:33 2010 (r16464)
@@ -0,0 +1,45 @@
+ net/rds/page.c | 27 +++++++--------------------
+ 1 files changed, 7 insertions(+), 20 deletions(-)
+
+diff --git a/net/rds/page.c b/net/rds/page.c
+index 595a952..1dfbfea 100644
+--- a/net/rds/page.c
++++ b/net/rds/page.c
+@@ -57,30 +57,17 @@ int rds_page_copy_user(struct page *page, unsigned long offset,
+ unsigned long ret;
+ void *addr;
+
+- if (to_user)
++ addr = kmap(page);
++ if (to_user) {
+ rds_stats_add(s_copy_to_user, bytes);
+- else
++ ret = copy_to_user(ptr, addr + offset, bytes);
++ } else {
+ rds_stats_add(s_copy_from_user, bytes);
+-
+- addr = kmap_atomic(page, KM_USER0);
+- if (to_user)
+- ret = __copy_to_user_inatomic(ptr, addr + offset, bytes);
+- else
+- ret = __copy_from_user_inatomic(addr + offset, ptr, bytes);
+- kunmap_atomic(addr, KM_USER0);
+-
+- if (ret) {
+- addr = kmap(page);
+- if (to_user)
+- ret = copy_to_user(ptr, addr + offset, bytes);
+- else
+- ret = copy_from_user(addr + offset, ptr, bytes);
+- kunmap(page);
+- if (ret)
+- return -EFAULT;
++ ret = copy_from_user(addr + offset, ptr, bytes);
+ }
++ kunmap(page);
+
+- return 0;
++ return ret ? -EFAULT : 0;
+ }
+ EXPORT_SYMBOL_GPL(rds_page_copy_user);
+
Modified: dists/sid/linux-2.6/debian/patches/series/26
==============================================================================
--- dists/sid/linux-2.6/debian/patches/series/26 Tue Oct 19 18:23:47 2010 (r16463)
+++ dists/sid/linux-2.6/debian/patches/series/26 Tue Oct 19 19:27:33 2010 (r16464)
@@ -9,3 +9,4 @@
+ bugfix/all/sata_via-Delay-on-vt6420-when-starting-ATAPI-DMA-write.patch
+ bugfix/all/r6040-fix-r6040_multicast_list.patch
+ bugfix/all/r6040-Fix-multicast-list-iteration.patch
++ bugfix/all/net-rds-remove-kmap_atomic-optimization.patch
More information about the Kernel-svn-changes
mailing list