diff for duplicates of <20100812222857.GC3665@quack.suse.cz> diff --git a/a/2.txt b/N1/2.txt index 4c97aa3..8b13789 100644 --- a/a/2.txt +++ b/N1/2.txt @@ -1,31 +1 @@ ->From c2095a0047822139a7f72ba6e766e94acd4affaf Mon Sep 17 00:00:00 2001 -From: Jan Kara <jack@suse.cz> -Date: Fri, 13 Aug 2010 00:20:25 +0200 -Subject: [PATCH] mm: Fix overflow in radix_tree_range_tag_if_tagged -When radix_tree_maxindex() is ~0UL, it can happen that scanning -overflows index and tree traversal code goes astray reading memory -until it hits unreadable memory. Check for overflow and exit in -that case. - -Signed-off-by: Jan Kara <jack@suse.cz> ---- - lib/radix-tree.c | 3 ++- - 1 files changed, 2 insertions(+), 1 deletions(-) - -diff --git a/lib/radix-tree.c b/lib/radix-tree.c -index 549ce9c..6a6c81d 100644 ---- a/lib/radix-tree.c -+++ b/lib/radix-tree.c -@@ -673,7 +673,8 @@ unsigned long radix_tree_range_tag_if_tagged(struct radix_tree_root *root, - next: - /* Go to next item at level determined by 'shift' */ - index = ((index >> shift) + 1) << shift; -- if (index > last_index) -+ /* Overflow can happen when last_index is ~0UL... */ -+ if (index > last_index || !index) - break; - if (tagged > nr_to_tag) - break; --- -1.6.4.2 diff --git a/a/content_digest b/N1/content_digest index 36c1f65..3b0bf71 100644 --- a/a/content_digest +++ b/N1/content_digest @@ -66,36 +66,5 @@ "\01:2\0" "fn\00001-mm-Fix-overflow-in-radix_tree_range_tag_if_tagged.patch\0" "b\0" - ">From c2095a0047822139a7f72ba6e766e94acd4affaf Mon Sep 17 00:00:00 2001\n" - "From: Jan Kara <jack@suse.cz>\n" - "Date: Fri, 13 Aug 2010 00:20:25 +0200\n" - "Subject: [PATCH] mm: Fix overflow in radix_tree_range_tag_if_tagged\n" - "\n" - "When radix_tree_maxindex() is ~0UL, it can happen that scanning\n" - "overflows index and tree traversal code goes astray reading memory\n" - "until it hits unreadable memory. Check for overflow and exit in\n" - "that case.\n" - "\n" - "Signed-off-by: Jan Kara <jack@suse.cz>\n" - "---\n" - " lib/radix-tree.c | 3 ++-\n" - " 1 files changed, 2 insertions(+), 1 deletions(-)\n" - "\n" - "diff --git a/lib/radix-tree.c b/lib/radix-tree.c\n" - "index 549ce9c..6a6c81d 100644\n" - "--- a/lib/radix-tree.c\n" - "+++ b/lib/radix-tree.c\n" - "@@ -673,7 +673,8 @@ unsigned long radix_tree_range_tag_if_tagged(struct radix_tree_root *root,\n" - " next:\n" - " \t\t/* Go to next item at level determined by 'shift' */\n" - " \t\tindex = ((index >> shift) + 1) << shift;\n" - "-\t\tif (index > last_index)\n" - "+\t\t/* Overflow can happen when last_index is ~0UL... */\n" - "+\t\tif (index > last_index || !index)\n" - " \t\t\tbreak;\n" - " \t\tif (tagged > nr_to_tag)\n" - " \t\t\tbreak;\n" - "-- \n" - 1.6.4.2 -c00d1928f332ca08143b2983405463d9ac92ee97568e915783f891d662be7e3e +0af5df18c944cfaaf76078b102a617116468d6c02a50ded62a1121649778231a
This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.