From: Aruna Balakrishnaiah Date: Tue, 25 Jun 2013 09:03:56 +0000 (+0530) Subject: pstore: Fail to unlink if a driver has not defined pstore_erase X-Git-Tag: firefly_0821_release~3679^2~864 X-Git-Url: http://demsky.eecs.uci.edu/git/?a=commitdiff_plain;h=841eb01f53cdb78d840dc4000f103fa7dd4228d2;p=firefly-linux-kernel-4.4.55.git pstore: Fail to unlink if a driver has not defined pstore_erase commit bf2883339a33b7544b92ea465b90c3de55082032 upstream. pstore_erase is used to erase the record from the persistent store. So if a driver has not defined pstore_erase callback return -EPERM instead of unlinking a file as deleting the file without erasing its record in persistent store will give a wrong impression to customers. Signed-off-by: Aruna Balakrishnaiah Acked-by: Kees Cook Signed-off-by: Tony Luck Cc: HuKeping Signed-off-by: Greg Kroah-Hartman --- diff --git a/fs/pstore/inode.c b/fs/pstore/inode.c index 3ba30825f387..eaba02d951d3 100644 --- a/fs/pstore/inode.c +++ b/fs/pstore/inode.c @@ -178,6 +178,8 @@ static int pstore_unlink(struct inode *dir, struct dentry *dentry) if (p->psi->erase) p->psi->erase(p->type, p->id, p->count, dentry->d_inode->i_ctime, p->psi); + else + return -EPERM; return simple_unlink(dir, dentry); }