pstore: Fail to unlink if a driver has not defined pstore_erase
authorAruna Balakrishnaiah <aruna@linux.vnet.ibm.com>
Tue, 25 Jun 2013 09:03:56 +0000 (14:33 +0530)
committerTony Luck <tony.luck@intel.com>
Tue, 25 Jun 2013 17:04:38 +0000 (10:04 -0700)
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 <aruna@linux.vnet.ibm.com>
Acked-by: Kees Cook <keescook@chromium.org>
Signed-off-by: Tony Luck <tony.luck@intel.com>
fs/pstore/inode.c

index e4bcb2c..bfd95bf 100644 (file)
@@ -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);
 }