Received: by 2002:a05:6a10:1287:0:0:0:0 with SMTP id d7csp5410986pxv; Wed, 21 Jul 2021 04:59:20 -0700 (PDT) X-Google-Smtp-Source: ABdhPJzRgT0ufdwQVvKP7xyYA6geK2gY9Y1VHhxeB+I7KIqThWVQT1nRTcLHjb6rr365AfXFxcgo X-Received: by 2002:a17:906:86d0:: with SMTP id j16mr38012442ejy.20.1626868760136; Wed, 21 Jul 2021 04:59:20 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1626868760; cv=none; d=google.com; s=arc-20160816; b=fB64Cv3SL1Sl3fv7sQp7W6K59udBlcI/Oyop6Z5+v4Hsji5r/PdN9XWQk9GybJbCgj fUr7OESyt2upOnn7udMk+4CcfnmwPLCjrqusB5E4Ege8KwUlXL14zgASluUv0nOyRUur XwfforL8vKV/dNoEtEMo0b/d6c6dktQNUlD3CDXr5j2qZzX+ANaqkdX08oagZzzFRJgl Ol1ioJfyuYJ2Bj1OHAZJBe+NycFd57uZjCL/XFWdf/Br6akNCUxbF6YEz69Y4zXdyHqj O2tLPDfWUgdfHi86vXXGUudTPUJdfJDOQmc1ERP+IBocrjXzepsL/W0UNMpKfGxjS2z0 onEA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:in-reply-to:content-disposition:mime-version :references:message-id:subject:cc:to:from:date:dkim-signature; bh=kus0fbpagogtR0UuNF7Y3tYkXrQ85lqpWaXAdd3Mqhc=; b=OTxtoXER5Zq4YR6uYCT9/FdyOzWKC0goXEX6SG6gSSDLB+4rNIP/x3mabF96KSWO4f HGYhDkaR2xJDYLadpCWzsWvQw8qi86Mqtb62AZES0fhFBLJHeBMXn3/j1BXB3T2Zn0WS oQMliZmie8gysjovPY0/QHMnXqaEx/vK3afsUb2WDvbqoxrpBVI7guG+LgFFaxUc2s2J 9JJ3mZ5B7bYf5x2ARyaA3JsqFDoFvPlpJNgMCZU+lHCRLAnS+JSZ8J+GUalQ7GJbHhIN YvBMFZ5WUzpPB76cBtXWY6cHEVVfpeYyb5sKoMpysduB26LQigcyZ6SzwXZQiVeSqEkq Lp5Q== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linuxfoundation.org header.s=korg header.b=pU+YYoq3; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linuxfoundation.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id v26si15427955ejw.661.2021.07.21.04.58.56; Wed, 21 Jul 2021 04:59:20 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; dkim=pass header.i=@linuxfoundation.org header.s=korg header.b=pU+YYoq3; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linuxfoundation.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S237393AbhGULQt (ORCPT + 99 others); Wed, 21 Jul 2021 07:16:49 -0400 Received: from mail.kernel.org ([198.145.29.99]:53828 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S237773AbhGULMG (ORCPT ); Wed, 21 Jul 2021 07:12:06 -0400 Received: by mail.kernel.org (Postfix) with ESMTPSA id 751D46109F; Wed, 21 Jul 2021 11:51:58 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=linuxfoundation.org; s=korg; t=1626868319; bh=hEJvu6/cow0FvseVKzbhqeQsfEPQOVHFme9rz9lVotk=; h=Date:From:To:Cc:Subject:References:In-Reply-To:From; b=pU+YYoq3108Oq4wVKJY/mjGW/J6p2z50PLnpKyCLFFAoHdeO3j8uTwg7PRvaixFIl jwX55IS0msfH/94B4a6miF5/knSAlhrluvN0zy648W0pnBfmSSiJ6T5XJxWmmEQgi8 nHVna0fdHCRxiswPV+jhs9dCO7MFrMeB5M/Xd0po= Date: Wed, 21 Jul 2021 13:51:56 +0200 From: Greg Kroah-Hartman To: Xiyu Yang Cc: Dimitri Sivanich , Arnd Bergmann , linux-kernel@vger.kernel.org, yuanxzhang@fudan.edu.cn, Xin Tan Subject: Re: [PATCH] misc: sgi-gru: Convert from atomic_t to refcount_t on gru_thread_state->ts_refcnt Message-ID: References: <1626517043-42696-1-git-send-email-xiyuyang19@fudan.edu.cn> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <1626517043-42696-1-git-send-email-xiyuyang19@fudan.edu.cn> Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Sat, Jul 17, 2021 at 06:17:22PM +0800, Xiyu Yang wrote: > refcount_t type and corresponding API can protect refcounters from > accidental underflow and overflow and further use-after-free situations. > > Signed-off-by: Xiyu Yang > Signed-off-by: Xin Tan > --- > drivers/misc/sgi-gru/grumain.c | 6 +++--- > drivers/misc/sgi-gru/grutables.h | 3 ++- > 2 files changed, 5 insertions(+), 4 deletions(-) > > diff --git a/drivers/misc/sgi-gru/grumain.c b/drivers/misc/sgi-gru/grumain.c > index 40ac59dd018c..9afda47efbf2 100644 > --- a/drivers/misc/sgi-gru/grumain.c > +++ b/drivers/misc/sgi-gru/grumain.c > @@ -282,7 +282,7 @@ static void gru_unload_mm_tracker(struct gru_state *gru, > */ > void gts_drop(struct gru_thread_state *gts) > { > - if (gts && atomic_dec_return(>s->ts_refcnt) == 0) { > + if (gts && refcount_dec_and_test(>s->ts_refcnt)) { > if (gts->ts_gms) > gru_drop_mmu_notifier(gts->ts_gms); > kfree(gts); Related to this, shouldn't this really be a 'struct kref' instead of hand-creating the exact same logic? Want to make that change on top of this one? thanks, greg k-h