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

Commit 216e4a1d authored by Linus Torvalds's avatar Linus Torvalds
Browse files

Merge tag 'nfs-for-4.13-5' of git://git.linux-nfs.org/projects/anna/linux-nfs

Pull NFS client fixes from Anna Schumaker:
 "A few more NFS client bugfixes from me for rc5.

  Dros has a stable fix for flexfiles to prevent leaking the
  nfs4_ff_ds_version arrays when freeing a layout, Trond fixed a
  potential recovery loop situation with the TEST_STATEID operation, and
  Christoph fixed up the pNFS blocklayout Kconfig options to prevent
  unsafe use with kernels that don't have large block device support.
  Summary:

  Stable fix:
   - fix leaking nfs4_ff_ds_version array

  Other fixes:
   - improve TEST_STATEID OLD_STATEID handling to prevent recovery loop

   - require 64-bit sector_t for pNFS blocklayout to prevent 32-bit
     compile errors"

* tag 'nfs-for-4.13-5' of git://git.linux-nfs.org/projects/anna/linux-nfs:
  pnfs/blocklayout: require 64-bit sector_t
  NFSv4: Ignore NFS4ERR_OLD_STATEID in nfs41_check_open_stateid()
  nfs/flexfiles: fix leak of nfs4_ff_ds_version arrays
parents e0d0e045 8a9d6e96
Loading
Loading
Loading
Loading
+1 −0
Original line number Original line Diff line number Diff line
@@ -121,6 +121,7 @@ config PNFS_FILE_LAYOUT
config PNFS_BLOCK
config PNFS_BLOCK
	tristate
	tristate
	depends on NFS_V4_1 && BLK_DEV_DM
	depends on NFS_V4_1 && BLK_DEV_DM
	depends on 64BIT || LBDAF
	default NFS_V4
	default NFS_V4


config PNFS_FLEXFILE_LAYOUT
config PNFS_FLEXFILE_LAYOUT
+1 −0
Original line number Original line Diff line number Diff line
@@ -32,6 +32,7 @@ void nfs4_ff_layout_free_deviceid(struct nfs4_ff_layout_ds *mirror_ds)
{
{
	nfs4_print_deviceid(&mirror_ds->id_node.deviceid);
	nfs4_print_deviceid(&mirror_ds->id_node.deviceid);
	nfs4_pnfs_ds_put(mirror_ds->ds);
	nfs4_pnfs_ds_put(mirror_ds->ds);
	kfree(mirror_ds->ds_versions);
	kfree_rcu(mirror_ds, id_node.rcu);
	kfree_rcu(mirror_ds, id_node.rcu);
}
}


+1 −2
Original line number Original line Diff line number Diff line
@@ -2553,9 +2553,8 @@ static int nfs41_check_open_stateid(struct nfs4_state *state)
		clear_bit(NFS_O_RDWR_STATE, &state->flags);
		clear_bit(NFS_O_RDWR_STATE, &state->flags);
		clear_bit(NFS_OPEN_STATE, &state->flags);
		clear_bit(NFS_OPEN_STATE, &state->flags);
		stateid->type = NFS4_INVALID_STATEID_TYPE;
		stateid->type = NFS4_INVALID_STATEID_TYPE;
	}
	if (status != NFS_OK)
		return status;
		return status;
	}
	if (nfs_open_stateid_recover_openmode(state))
	if (nfs_open_stateid_recover_openmode(state))
		return -NFS4ERR_OPENMODE;
		return -NFS4ERR_OPENMODE;
	return NFS_OK;
	return NFS_OK;