From: chiminghao <chi.minghao@xxxxxxxxxx> use refcount_t instead of atomic_t which prevents reference counter overflows. Reported-by: Zeal Robot <zealci@xxxxxxxxxx> Signed-off-by: chiminghao <chi.minghao@xxxxxxxxxx> --- fs/cifs/cifsglob.h | 4 ++-- fs/cifs/connect.c | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/fs/cifs/cifsglob.h b/fs/cifs/cifsglob.h index 41e97df4e0e5..a8edaada0fea 100644 --- a/fs/cifs/cifsglob.h +++ b/fs/cifs/cifsglob.h @@ -8,7 +8,7 @@ */ #ifndef _CIFS_GLOB_H #define _CIFS_GLOB_H - +#include <linux/refcount.h> #include <linux/in.h> #include <linux/in6.h> #include <linux/inet.h> @@ -1115,7 +1115,7 @@ struct tcon_link { #define TCON_LINK_PENDING 1 #define TCON_LINK_IN_TREE 2 unsigned long tl_time; - atomic_t tl_count; + refcount_t tl_count; struct cifs_tcon *tl_tcon; }; diff --git a/fs/cifs/connect.c b/fs/cifs/connect.c index 9637465d23db..4aad8c9acf2e 100644 --- a/fs/cifs/connect.c +++ b/fs/cifs/connect.c @@ -2318,7 +2318,7 @@ cifs_put_tlink(struct tcon_link *tlink) if (!tlink || IS_ERR(tlink)) return; - if (!atomic_dec_and_test(&tlink->tl_count) || + if (!refcount_dec_and_test(&tlink->tl_count) || test_bit(TCON_LINK_IN_TREE, &tlink->tl_flags)) { tlink->tl_time = jiffies; return; -- 2.25.1