aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/scsi/st.c
diff options
context:
space:
mode:
authorKai Makisara <Kai.Makisara@kolumbus.fi>2010-12-20 11:43:39 -0500
committerJames Bottomley <James.Bottomley@suse.de>2010-12-23 00:26:50 -0500
commit373daacfce9ea0091cb3027572354ddebefb8ebb (patch)
treedcab8e7551cf8c06d688bab74b1e6b8ec7b1b05a /drivers/scsi/st.c
parenta87e3a67d57472f40da2218793ff6d25c4518498 (diff)
[SCSI] st: Store page order before driver buffer allocation
The order of the pages allocated for the driver buffer must be stored before allocation because it is used in freeing already allocated pages if allocation fails. Signed-off-by: Kai Makisara <kai.makisara@kolumbus.fi> Reported-by: Lukas Kolbe <lkolbe@techfak.uni-bielefeld.de> Signed-off-by: James Bottomley <James.Bottomley@suse.de>
Diffstat (limited to 'drivers/scsi/st.c')
-rw-r--r--drivers/scsi/st.c4
1 files changed, 2 insertions, 2 deletions
diff --git a/drivers/scsi/st.c b/drivers/scsi/st.c
index 5b7388f1c835..12a36acae0b0 100644
--- a/drivers/scsi/st.c
+++ b/drivers/scsi/st.c
@@ -17,7 +17,7 @@
17 Last modified: 18-JAN-1998 Richard Gooch <rgooch@atnf.csiro.au> Devfs support 17 Last modified: 18-JAN-1998 Richard Gooch <rgooch@atnf.csiro.au> Devfs support
18 */ 18 */
19 19
20static const char *verstr = "20100829"; 20static const char *verstr = "20101219";
21 21
22#include <linux/module.h> 22#include <linux/module.h>
23 23
@@ -3732,6 +3732,7 @@ static int enlarge_buffer(struct st_buffer * STbuffer, int new_size, int need_dm
3732 order < ST_MAX_ORDER && b_size < new_size; 3732 order < ST_MAX_ORDER && b_size < new_size;
3733 order++, b_size *= 2) 3733 order++, b_size *= 2)
3734 ; /* empty */ 3734 ; /* empty */
3735 STbuffer->reserved_page_order = order;
3735 } 3736 }
3736 if (max_segs * (PAGE_SIZE << order) < new_size) { 3737 if (max_segs * (PAGE_SIZE << order) < new_size) {
3737 if (order == ST_MAX_ORDER) 3738 if (order == ST_MAX_ORDER)
@@ -3758,7 +3759,6 @@ static int enlarge_buffer(struct st_buffer * STbuffer, int new_size, int need_dm
3758 segs++; 3759 segs++;
3759 } 3760 }
3760 STbuffer->b_data = page_address(STbuffer->reserved_pages[0]); 3761 STbuffer->b_data = page_address(STbuffer->reserved_pages[0]);
3761 STbuffer->reserved_page_order = order;
3762 3762
3763 return 1; 3763 return 1;
3764} 3764}