Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > linux.kernel > #1600059

[PATCH 12/12] fs, nfs: convert nfs_cache_array.refcount from atomic_t to refcount_t

From Elena Reshetova <elena.reshetova@intel.com>
Newsgroups linux.kernel
Subject [PATCH 12/12] fs, nfs: convert nfs_cache_array.refcount from atomic_t to refcount_t
Date 2017-03-14 08:10 +0100
Message-ID <tkOKK-4Zd-11@gated-at.bofh.it> (permalink)
References <tkOKJ-4Zd-5@gated-at.bofh.it>
Organization linux.* mail to news gateway

Show all headers | View raw


refcount_t type and corresponding API should be
used instead of atomic_t when the variable is used as
a reference counter. This allows to avoid accidental
refcounter overflows that might lead to use-after-free
situations.

Signed-off-by: Elena Reshetova <elena.reshetova@intel.com>
Signed-off-by: Hans Liljestrand <ishkamiel@gmail.com>
Signed-off-by: Kees Cook <keescook@chromium.org>
Signed-off-by: David Windsor <dwindsor@gmail.com>
---
 fs/nfs/dir.c | 8 ++++----
 1 file changed, 4 insertions(+), 4 deletions(-)

diff --git a/fs/nfs/dir.c b/fs/nfs/dir.c
index fad8104..0c95d2b 100644
--- a/fs/nfs/dir.c
+++ b/fs/nfs/dir.c
@@ -145,7 +145,7 @@ struct nfs_cache_array_entry {
 };
 
 struct nfs_cache_array {
-	atomic_t refcount;
+	refcount_t refcount;
 	int size;
 	int eof_index;
 	u64 last_cookie;
@@ -201,7 +201,7 @@ void nfs_readdir_clear_array(struct page *page)
 	int i;
 
 	array = kmap_atomic(page);
-	if (atomic_dec_and_test(&array->refcount))
+	if (refcount_dec_and_test(&array->refcount))
 		for (i = 0; i < array->size; i++)
 			kfree(array->array[i].string.name);
 	kunmap_atomic(array);
@@ -210,7 +210,7 @@ void nfs_readdir_clear_array(struct page *page)
 static bool grab_page(struct page *page)
 {
 	struct nfs_cache_array *array = kmap_atomic(page);
-	bool res = atomic_inc_not_zero(&array->refcount);
+	bool res = refcount_inc_not_zero(&array->refcount);
 	kunmap_atomic(array);
 	return res;
 }
@@ -680,7 +680,7 @@ int nfs_readdir_xdr_to_array(nfs_readdir_descriptor_t *desc, struct page *page,
 		goto out_label_free;
 	}
 	memset(array, 0, sizeof(struct nfs_cache_array));
-	atomic_set(&array->refcount, 1);
+	refcount_set(&array->refcount, 1);
 	array->eof_index = -1;
 
 	status = nfs_readdir_alloc_pages(pages, array_size);
-- 
2.7.4

Back to linux.kernel | Previous | NextPrevious in thread | Next in thread | Find similar | Unroll thread


Thread

[PATCH 00/12] fs, nfs conversions from atomic_t to refcount_t Elena Reshetova <elena.reshetova@intel.com> - 2017-03-14 08:10 +0100
  [PATCH 10/12] fs, nfs: convert nfs_lock_context.count from atomic_t to refcount_t Elena Reshetova <elena.reshetova@intel.com> - 2017-03-14 08:10 +0100
  [PATCH 11/12] fs, nfs: convert nfs_client.cl_count from atomic_t to refcount_t Elena Reshetova <elena.reshetova@intel.com> - 2017-03-14 08:10 +0100
  [PATCH 12/12] fs, nfs: convert nfs_cache_array.refcount from atomic_t to refcount_t Elena Reshetova <elena.reshetova@intel.com> - 2017-03-14 08:10 +0100
  [PATCH 07/12] fs, nfs: convert nfs4_ff_layout_mirror.ref from atomic_t to refcount_t Elena Reshetova <elena.reshetova@intel.com> - 2017-03-14 08:10 +0100
  [PATCH 08/12] fs, nfs: convert nfs_cache_defer_req.count from atomic_t to refcount_t Elena Reshetova <elena.reshetova@intel.com> - 2017-03-14 08:10 +0100
  [PATCH 01/12] fs, nfsd: convert nfs4_stid.sc_count from atomic_t to refcount_t Elena Reshetova <elena.reshetova@intel.com> - 2017-03-14 08:10 +0100
  [PATCH 05/12] fs, nfs: convert pnfs_layout_segment.pls_refcount from atomic_t to refcount_t Elena Reshetova <elena.reshetova@intel.com> - 2017-03-14 08:10 +0100
  [PATCH 03/12] fs, nfsd: convert nfs4_file.fi_ref from atomic_t to refcount_t Elena Reshetova <elena.reshetova@intel.com> - 2017-03-14 08:10 +0100
  [PATCH 06/12] fs, nfs: convert pnfs_layout_hdr.plh_refcount from atomic_t to refcount_t Elena Reshetova <elena.reshetova@intel.com> - 2017-03-14 08:20 +0100
  [PATCH 09/12] fs, nfs: convert nfs4_lock_state.ls_count from atomic_t to refcount_t Elena Reshetova <elena.reshetova@intel.com> - 2017-03-14 08:20 +0100
  [PATCH 04/12] fs, nfs: convert nfs4_pnfs_ds.ds_count from atomic_t to refcount_t Elena Reshetova <elena.reshetova@intel.com> - 2017-03-14 08:20 +0100
  [PATCH 02/12] fs, nfsd: convert nfs4_cntl_odstate.co_odcount from atomic_t to refcount_t Elena Reshetova <elena.reshetova@intel.com> - 2017-03-14 08:20 +0100

csiph-web