Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit e9e360b0 authored by Namhyung Kim's avatar Namhyung Kim Committed by Kees Cook
Browse files

pstore: Protect unlink with read_mutex



When update_ms is set, pstore_get_records() will be called when there's
a new entry.  But unlink can be called at the same time and might
contend with the open-read-close loop.  Depending on the implementation
of platform driver, it may be safe or not.  But I think it'd be better
to protect those race in the first place.

Cc: Stefan Hajnoczi <stefanha@redhat.com>
Signed-off-by: default avatarNamhyung Kim <namhyung@kernel.org>
Signed-off-by: default avatarKees Cook <keescook@chromium.org>
parent 7a0032f5
Loading
Loading
Loading
Loading
+5 −2
Original line number Diff line number Diff line
@@ -199,11 +199,14 @@ static int pstore_unlink(struct inode *dir, struct dentry *dentry)
	if (err)
		return err;

	if (p->psi->erase)
	if (p->psi->erase) {
		mutex_lock(&p->psi->read_mutex);
		p->psi->erase(p->type, p->id, p->count,
			      d_inode(dentry)->i_ctime, p->psi);
	else
		mutex_unlock(&p->psi->read_mutex);
	} else {
		return -EPERM;
	}

	return simple_unlink(dir, dentry);
}