diff options
| author | Elena Reshetova <elena.reshetova@intel.com> | 2017-03-17 08:10:28 -0400 |
|---|---|---|
| committer | Ilya Dryomov <idryomov@gmail.com> | 2017-05-04 03:19:19 -0400 |
| commit | 02113a0f14e20bd8e675d7cec16db6eaaf2b2380 (patch) | |
| tree | 51321901e6e89910ed14f7598bbec39444581add /include/linux | |
| parent | 06dfa96399a9a3280dd81e47f8696aa89f1783e7 (diff) | |
libceph: convert ceph_osd.o_ref from atomic_t to refcount_t
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>
Signed-off-by: Ilya Dryomov <idryomov@gmail.com>
Diffstat (limited to 'include/linux')
| -rw-r--r-- | include/linux/ceph/osd_client.h | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/include/linux/ceph/osd_client.h b/include/linux/ceph/osd_client.h index c125b5d9e13c..d6a625e75040 100644 --- a/include/linux/ceph/osd_client.h +++ b/include/linux/ceph/osd_client.h | |||
| @@ -5,6 +5,7 @@ | |||
| 5 | #include <linux/kref.h> | 5 | #include <linux/kref.h> |
| 6 | #include <linux/mempool.h> | 6 | #include <linux/mempool.h> |
| 7 | #include <linux/rbtree.h> | 7 | #include <linux/rbtree.h> |
| 8 | #include <linux/refcount.h> | ||
| 8 | 9 | ||
| 9 | #include <linux/ceph/types.h> | 10 | #include <linux/ceph/types.h> |
| 10 | #include <linux/ceph/osdmap.h> | 11 | #include <linux/ceph/osdmap.h> |
| @@ -27,7 +28,7 @@ typedef void (*ceph_osdc_callback_t)(struct ceph_osd_request *); | |||
| 27 | 28 | ||
| 28 | /* a given osd we're communicating with */ | 29 | /* a given osd we're communicating with */ |
| 29 | struct ceph_osd { | 30 | struct ceph_osd { |
| 30 | atomic_t o_ref; | 31 | refcount_t o_ref; |
| 31 | struct ceph_osd_client *o_osdc; | 32 | struct ceph_osd_client *o_osdc; |
| 32 | int o_osd; | 33 | int o_osd; |
| 33 | int o_incarnation; | 34 | int o_incarnation; |
