Commit fe474662 authored by Al Viro's avatar Al Viro
Browse files

functionfs: don't bother with ffs->ref in ffs_data_{opened,closed}()



A reference is held by the superblock (it's dropped in ffs_kill_sb())
and filesystem will not get to ->kill_sb() while there are any opened
files, TYVM...

Reviewed-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Signed-off-by: default avatarAl Viro <viro@zeniv.linux.org.uk>
parent fcb89851
Loading
Loading
Loading
Loading
+3 −5
Original line number Diff line number Diff line
@@ -2128,7 +2128,6 @@ static void ffs_data_get(struct ffs_data *ffs)

static void ffs_data_opened(struct ffs_data *ffs)
{
	refcount_inc(&ffs->ref);
	if (atomic_add_return(1, &ffs->opened) == 1 &&
			ffs->state == FFS_DEACTIVATED) {
		ffs->state = FFS_CLOSING;
@@ -2153,11 +2152,11 @@ static void ffs_data_put(struct ffs_data *ffs)

static void ffs_data_closed(struct ffs_data *ffs)
{
	if (atomic_dec_and_test(&ffs->opened)) {
		if (ffs->no_disconnect) {
			struct ffs_epfile *epfiles;
			unsigned long flags;

	if (atomic_dec_and_test(&ffs->opened)) {
		if (ffs->no_disconnect) {
			ffs->state = FFS_DEACTIVATED;
			spin_lock_irqsave(&ffs->eps_lock, flags);
			epfiles = ffs->epfiles;
@@ -2176,7 +2175,6 @@ static void ffs_data_closed(struct ffs_data *ffs)
			ffs_data_reset(ffs);
		}
	}
	ffs_data_put(ffs);
}

static struct ffs_data *ffs_data_new(const char *dev_name)