summaryrefslogtreecommitdiffstats
path: root/virt/kvm/async_pf.c
diff options
context:
space:
mode:
authorRichard Weinberger <richard@nod.at>2017-01-10 11:49:40 +0100
committerRichard Weinberger <richard@nod.at>2017-01-17 14:35:58 +0100
commit1cb51a15b576ee325d527726afff40947218fd5e (patch)
treef26bd7bac5dab201fd3688fe2ec9ea15c06c7480 /virt/kvm/async_pf.c
parent3d4b2fcbc980879a1385d5d7d17a4ffd0ee9aa1f (diff)
downloadlinux-stable-1cb51a15b576ee325d527726afff40947218fd5e.tar.gz
linux-stable-1cb51a15b576ee325d527726afff40947218fd5e.tar.bz2
linux-stable-1cb51a15b576ee325d527726afff40947218fd5e.zip
ubifs: Fix journal replay wrt. xattr nodes
When replaying the journal it can happen that a journal entry points to a garbage collected node. This is the case when a power-cut occurred between a garbage collect run and a commit. In such a case nodes have to be read using the failable read functions to detect whether the found node matches what we expect. One corner case was forgotten, when the journal contains an entry to remove an inode all xattrs have to be removed too. UBIFS models xattr like directory entries, so the TNC code iterates over all xattrs of the inode and removes them too. This code re-uses the functions for walking directories and calls ubifs_tnc_next_ent(). ubifs_tnc_next_ent() expects to be used only after the journal and aborts when a node does not match the expected result. This behavior can render an UBIFS volume unmountable after a power-cut when xattrs are used. Fix this issue by using failable read functions in ubifs_tnc_next_ent() too when replaying the journal. Cc: stable@vger.kernel.org Fixes: 1e51764a3c2ac05a ("UBIFS: add new flash file system") Reported-by: Rock Lee <rockdotlee@gmail.com> Reviewed-by: David Gstir <david@sigma-star.at> Signed-off-by: Richard Weinberger <richard@nod.at>
Diffstat (limited to 'virt/kvm/async_pf.c')
0 files changed, 0 insertions, 0 deletions