r2705 - in trunk/kernel/source/kernel-source-2.6.8-2.6.8/debian: . patches patches/series

Andres Salomon dilinger-guest@costa.debian.org
Mon, 14 Mar 2005 11:08:58 +0100


Author: dilinger-guest
Date: 2005-03-14 11:08:56 +0100 (Mon, 14 Mar 2005)
New Revision: 2705

Added:
   trunk/kernel/source/kernel-source-2.6.8-2.6.8/debian/patches/117-reiserfs_file_64bit_size_t_fixes.dpatch
Modified:
   trunk/kernel/source/kernel-source-2.6.8-2.6.8/debian/changelog
   trunk/kernel/source/kernel-source-2.6.8-2.6.8/debian/patches/series/2.6.8-14
Log:
  * [SECURITY] 117-reiserfs_file_64bit_size_t_fixes.dpatch
    reiserfs integer fixes; WDYBTGT3-4 on
    http://www.guninski.com/where_do_you_want_billg_to_go_today_3.html
    (Andres Salomon).



Modified: trunk/kernel/source/kernel-source-2.6.8-2.6.8/debian/changelog
===================================================================
--- trunk/kernel/source/kernel-source-2.6.8-2.6.8/debian/changelog	2005-03-14 10:03:46 UTC (rev 2704)
+++ trunk/kernel/source/kernel-source-2.6.8-2.6.8/debian/changelog	2005-03-14 10:08:56 UTC (rev 2705)
@@ -91,6 +91,11 @@
     http://www.guninski.com/where_do_you_want_billg_to_go_today_3.html
     No CAN#, yet (Andres Salomon).
 
+  * [SECURITY] 117-reiserfs_file_64bit_size_t_fixes.dpatch
+    reiserfs integer fixes; WDYBTGT3-4 on
+    http://www.guninski.com/where_do_you_want_billg_to_go_today_3.html
+    (Andres Salomon).
+
  -- Joshua Kwan <joshk@triplehelix.org>  Mon, 14 Mar 2005 00:03:12 -0800
 
 kernel-source-2.6.8 (2.6.8-13) unstable; urgency=high

Added: trunk/kernel/source/kernel-source-2.6.8-2.6.8/debian/patches/117-reiserfs_file_64bit_size_t_fixes.dpatch
===================================================================
--- trunk/kernel/source/kernel-source-2.6.8-2.6.8/debian/patches/117-reiserfs_file_64bit_size_t_fixes.dpatch	2005-03-14 10:03:46 UTC (rev 2704)
+++ trunk/kernel/source/kernel-source-2.6.8-2.6.8/debian/patches/117-reiserfs_file_64bit_size_t_fixes.dpatch	2005-03-14 10:08:56 UTC (rev 2705)
@@ -0,0 +1,106 @@
+#! /bin/sh -e
+## <PATCHNAME>.dpatch by <PATCH_AUTHOR@EMAI>
+##
+## All lines beginning with `## DP:' are a description of the patch.
+## DP: Description: [PATCH] reiserfs: use proper 64-bit clean types
+## DP: Patch author: guninski@guninski.com
+## DP: Upstream status: backport
+
+. $(dirname $0)/DPATCH
+
+@DPATCH@
+# This is a BitKeeper generated diff -Nru style patch.
+#
+# ChangeSet
+#   2005/02/02 17:45:11-08:00 guninski@guninski.com 
+#   [PATCH] reiserfs: use proper 64-bit clean types
+#   
+#   reiserfs_file_write() casts its (size_t) count parameter to int, which can become
+#   a problem on 64-bit architectures
+#   
+#   This attempts to fix this by changing the variables dealing with count
+#   and offset and the "min_t" comparisons to use "size_t" through-out.
+#   
+#   Acked-by: Marcelo Tosatti <marcelo.tosatti@cyclades.com>
+#   Signed-off-by: Linus Torvalds <torvalds@osdl.org>
+# 
+# fs/reiserfs/file.c
+#   2005/01/26 07:28:12-08:00 guninski@guninski.com +11 -12
+#   reiserfs: use proper 64-bit clean types
+# 
+diff -Nru a/fs/reiserfs/file.c b/fs/reiserfs/file.c
+--- a/fs/reiserfs/file.c	2005-02-14 01:29:00 -08:00
++++ b/fs/reiserfs/file.c	2005-02-14 01:29:00 -08:00
+@@ -588,7 +588,7 @@
+ 
+ /* Unlock pages prepared by reiserfs_prepare_file_region_for_write */
+ void reiserfs_unprepare_pages(struct page **prepared_pages, /* list of locked pages */
+-			      int num_pages /* amount of pages */) {
++			      size_t num_pages /* amount of pages */) {
+     int i; // loop counter
+ 
+     for (i=0; i < num_pages ; i++) {
+@@ -619,7 +619,7 @@
+     int offset; // offset in page
+ 
+     for ( i = 0, offset = (pos & (PAGE_CACHE_SIZE-1)); i < num_pages ; i++,offset=0) {
+-	int count = min_t(int,PAGE_CACHE_SIZE-offset,write_bytes); // How much of bytes to write to this page
++	size_t count = min_t(size_t,PAGE_CACHE_SIZE-offset,write_bytes); // How much of bytes to write to this page
+ 	struct page *page=prepared_pages[i]; // Current page we process.
+ 
+ 	fault_in_pages_readable( buf, count);
+@@ -718,8 +718,8 @@
+ 				struct reiserfs_transaction_handle *th,
+ 				struct inode *inode,
+ 				loff_t pos, /* Writing position offset */
+-				int num_pages, /* Number of pages to write */
+-				int write_bytes, /* number of bytes to write */
++				size_t num_pages, /* Number of pages to write */
++				size_t write_bytes, /* number of bytes to write */
+ 				struct page **prepared_pages /* list of pages */
+ 				)
+ {
+@@ -854,9 +854,9 @@
+ static int reiserfs_prepare_file_region_for_write(
+ 				struct inode *inode /* Inode of the file */,
+ 				loff_t pos, /* position in the file */
+-				int num_pages, /* number of pages to
++				size_t num_pages, /* number of pages to
+ 					          prepare */
+-				int write_bytes, /* Amount of bytes to be
++				size_t write_bytes, /* Amount of bytes to be
+ 						    overwritten from
+ 						    @pos */
+ 				struct page **prepared_pages /* pointer to array
+@@ -1252,10 +1252,9 @@
+     while ( count > 0) {
+ 	/* This is the main loop in which we running until some error occures
+ 	   or until we write all of the data. */
+-	int num_pages;/* amount of pages we are going to write this iteration */
+-	int write_bytes; /* amount of bytes to write during this iteration */
+-	int blocks_to_allocate; /* how much blocks we need to allocate for
+-				   this iteration */
++	size_t num_pages;/* amount of pages we are going to write this iteration */
++	size_t write_bytes; /* amount of bytes to write during this iteration */
++	size_t blocks_to_allocate; /* how much blocks we need to allocate for this iteration */
+         
+         /*  (pos & (PAGE_CACHE_SIZE-1)) is an idiom for offset into a page of pos*/
+ 	num_pages = !!((pos+count) & (PAGE_CACHE_SIZE - 1)) + /* round up partial
+@@ -1269,7 +1268,7 @@
+ 	    /* If we were asked to write more data than we want to or if there
+ 	       is not that much space, then we shorten amount of data to write
+ 	       for this iteration. */
+-	    num_pages = min_t(int, REISERFS_WRITE_PAGES_AT_A_TIME, reiserfs_can_fit_pages(inode->i_sb));
++	    num_pages = min_t(size_t, REISERFS_WRITE_PAGES_AT_A_TIME, reiserfs_can_fit_pages(inode->i_sb));
+ 	    /* Also we should not forget to set size in bytes accordingly */
+ 	    write_bytes = (num_pages << PAGE_CACHE_SHIFT) - 
+ 			    (pos & (PAGE_CACHE_SIZE-1));
+@@ -1295,7 +1294,7 @@
+ 	    // But overwriting files on absolutelly full volumes would not
+ 	    // be very efficient. Well, people are not supposed to fill
+ 	    // 100% of disk space anyway.
+-	    write_bytes = min_t(int, count, inode->i_sb->s_blocksize - (pos & (inode->i_sb->s_blocksize - 1)));
++	    write_bytes = min_t(size_t, count, inode->i_sb->s_blocksize - (pos & (inode->i_sb->s_blocksize - 1)));
+ 	    num_pages = 1;
+ 	    // No blocks were claimed before, so do it now.
+ 	    reiserfs_claim_blocks_to_be_allocated(inode->i_sb, 1 << (PAGE_CACHE_SHIFT - inode->i_blkbits));

Modified: trunk/kernel/source/kernel-source-2.6.8-2.6.8/debian/patches/series/2.6.8-14
===================================================================
--- trunk/kernel/source/kernel-source-2.6.8-2.6.8/debian/patches/series/2.6.8-14	2005-03-14 10:03:46 UTC (rev 2704)
+++ trunk/kernel/source/kernel-source-2.6.8-2.6.8/debian/patches/series/2.6.8-14	2005-03-14 10:08:56 UTC (rev 2705)
@@ -25,3 +25,4 @@
 + 109-binfmt_elf_loader_solar_designer_fixes.dpatch
 + 115-proc_file_read_nbytes_signedness_fix.dpatch
 + 116-n_tty_copy_from_read_buf_signedness_fixes.dpatch
++ 117-reiserfs_file_64bit_size_t_fixes.dpatch