diff options
author | Hugh Dickins <hugh@veritas.com> | 2009-01-06 17:39:56 -0500 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2009-01-06 18:59:06 -0500 |
commit | 858a29900ea2d639759e697be901a60b759cdcfb (patch) | |
tree | 2a75b37a5bb5522c33d47356354866d0b3e8bb40 /mm/swapfile.c | |
parent | c60aa176c6de82703f064082b909496fc4fee956 (diff) |
swapfile: change discard pgoff_t to sector_t
Change pgoff_t nr_blocks in discard_swap() and discard_swap_cluster() to
sector_t: given the constraints on swap offsets (in particular, the 5 bits
of swap type accommodated in the same unsigned long), pgoff_t was actually
safe as is, but it certainly looked worrying when shifted left.
[akpm@linux-foundation.org: fix shift overflow]
Signed-off-by: Hugh Dickins <hugh@veritas.com>
Cc: KAMEZAWA Hiroyuki <kamezawa.hiroyu@jp.fujitsu.com>
Cc: Nick Piggin <nickpiggin@yahoo.com.au>
Cc: David Woodhouse <dwmw2@infradead.org>
Cc: Jens Axboe <jens.axboe@oracle.com>
Cc: Matthew Wilcox <matthew@wil.cx>
Cc: Joern Engel <joern@logfs.org>
Cc: James Bottomley <James.Bottomley@HansenPartnership.com>
Cc: Donjun Shin <djshin90@gmail.com>
Cc: Tejun Heo <teheo@suse.de>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Diffstat (limited to 'mm/swapfile.c')
-rw-r--r-- | mm/swapfile.c | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/mm/swapfile.c b/mm/swapfile.c index 763210732b5f..6a078557306a 100644 --- a/mm/swapfile.c +++ b/mm/swapfile.c | |||
@@ -96,7 +96,7 @@ static int discard_swap(struct swap_info_struct *si) | |||
96 | 96 | ||
97 | list_for_each_entry(se, &si->extent_list, list) { | 97 | list_for_each_entry(se, &si->extent_list, list) { |
98 | sector_t start_block = se->start_block << (PAGE_SHIFT - 9); | 98 | sector_t start_block = se->start_block << (PAGE_SHIFT - 9); |
99 | pgoff_t nr_blocks = se->nr_pages << (PAGE_SHIFT - 9); | 99 | sector_t nr_blocks = (sector_t)se->nr_pages << (PAGE_SHIFT - 9); |
100 | 100 | ||
101 | if (se->start_page == 0) { | 101 | if (se->start_page == 0) { |
102 | /* Do not discard the swap header page! */ | 102 | /* Do not discard the swap header page! */ |
@@ -133,7 +133,7 @@ static void discard_swap_cluster(struct swap_info_struct *si, | |||
133 | start_page < se->start_page + se->nr_pages) { | 133 | start_page < se->start_page + se->nr_pages) { |
134 | pgoff_t offset = start_page - se->start_page; | 134 | pgoff_t offset = start_page - se->start_page; |
135 | sector_t start_block = se->start_block + offset; | 135 | sector_t start_block = se->start_block + offset; |
136 | pgoff_t nr_blocks = se->nr_pages - offset; | 136 | sector_t nr_blocks = se->nr_pages - offset; |
137 | 137 | ||
138 | if (nr_blocks > nr_pages) | 138 | if (nr_blocks > nr_pages) |
139 | nr_blocks = nr_pages; | 139 | nr_blocks = nr_pages; |