aboutsummaryrefslogtreecommitdiffstats
path: root/mm/swap_state.c
diff options
context:
space:
mode:
authorThomas Gleixner <tglx@linutronix.de>2009-02-16 21:29:31 +0100
committerDavid Woodhouse <David.Woodhouse@intel.com>2009-02-21 11:09:29 +0100
commit4c41bd0ec953954158f92bed5d3062645062b98e (patch)
treebd3f4c7fdbcac9bf2cabce557d472d6ed4ae4741 /mm/swap_state.c
parentefab0b5d3eed6aa71f8e3233e4e11774eedc04dc (diff)
downloadkernel_goldelico_gta04-4c41bd0ec953954158f92bed5d3062645062b98e.zip
kernel_goldelico_gta04-4c41bd0ec953954158f92bed5d3062645062b98e.tar.gz
kernel_goldelico_gta04-4c41bd0ec953954158f92bed5d3062645062b98e.tar.bz2
[JFFS2] fix mount crash caused by removed nodes
At scan time we observed following scenario: node A inserted node B inserted node C inserted -> sets overlapped flag on node B node A is removed due to CRC failure -> overlapped flag on node B remains while (tn->overlapped) tn = tn_prev(tn); ==> crash, when tn_prev(B) is referenced. When the ultimate node is removed at scan time and the overlapped flag is set on the penultimate node, then nothing updates the overlapped flag of that node. The overlapped iterators blindly expect that the ultimate node does not have the overlapped flag set, which causes the scan code to crash. It would be a huge overhead to go through the node chain on node removal and fix up the overlapped flags, so detecting such a case on the fly in the overlapped iterators is a simpler and reliable solution. Cc: stable@kernel.org Signed-off-by: Thomas Gleixner <tglx@linutronix.de> Signed-off-by: David Woodhouse <David.Woodhouse@intel.com>
Diffstat (limited to 'mm/swap_state.c')
0 files changed, 0 insertions, 0 deletions