Received: by 2002:a25:6193:0:0:0:0:0 with SMTP id v141csp5021649ybb; Tue, 24 Mar 2020 09:30:11 -0700 (PDT) X-Google-Smtp-Source: ADFU+vuK9xUbbvaeV1nDNQBpVtifyaoWqiHP5Jcd6LZQAFdz74Cnlk0W/E//MjosCeAdrC/TYFbV X-Received: by 2002:a9d:719a:: with SMTP id o26mr23418426otj.290.1585067411213; Tue, 24 Mar 2020 09:30:11 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1585067411; cv=none; d=google.com; s=arc-20160816; b=KIK461mHJ/cLhyUaCJIWIqf5XAG3GYax0H6EoPjvkHvHtJ/nEVnbxPBdNsu6DsqpY1 9jV8IIi8SeXz8LXvJzfETCbji2iFz1wfm2u3Coeo/NG3TY5zYmi257B7cPrQN4SfNWlF ows1zBn/6wDGCn39ysgSEzX75nsGrcoT+GVBglZif0oIJ6RvFuGVSkQ/INAyFb4arho0 swIxXxOSuU0TxPRsP7IRvi0Grbz04Anbtx/nobFCWsLY0O8QVdKMQm74i/7s6il6H+YU pu4I+8Ohv7IydKeKj97/n5rmIpgpEwvZtoIm3bI7eHOXYU8uPePIxE8E9k8W1gzf89Xa wDaw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:cc:to:subject:message-id:date:from :in-reply-to:references:mime-version:dkim-signature; bh=F4RDqLUZsSxRiEPC5uE5/znG8mVAMvfJqVjLtVuPTYI=; b=ieXQ28ZqEUcN7861HlC2hPgieS4jCpIGrGI7jdu2vBchxWEIke1q3lj9kqhNHBJMsM Pnbo2JaRD4iWQSzGzPkn+5y9pYLZpRI/xAGEquD2pDeYGZjMRFCr8Vh2V2Dwh8CWPoxR uqHXZ0yeoHfQGxKaei7mRjeK0GIvx29tWN765Mq8i3XFs/gieGAr/XlZwatO1Wa7KBwB Y9SFPiNPow/ie5An4e3JMPzB5EL5iJ1a/6iTCy+SXQ/0mRHZioRGnfR+mToQP8XKP2IV T3/51JCW5TC8YuhWa9uSDYdFWtWHXbBYlrZlGj06fDVx+slViCyO9SOjmErpRntGrulR SazA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@gmail.com header.s=20161025 header.b=LuLLrr4e; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id p14si6259286ota.96.2020.03.24.09.29.57; Tue, 24 Mar 2020 09:30:11 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; dkim=pass header.i=@gmail.com header.s=20161025 header.b=LuLLrr4e; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1728746AbgCXQ2d (ORCPT + 99 others); Tue, 24 Mar 2020 12:28:33 -0400 Received: from mail-lj1-f195.google.com ([209.85.208.195]:39762 "EHLO mail-lj1-f195.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1728534AbgCXQ2d (ORCPT ); Tue, 24 Mar 2020 12:28:33 -0400 Received: by mail-lj1-f195.google.com with SMTP id i20so7195954ljn.6; Tue, 24 Mar 2020 09:28:30 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=F4RDqLUZsSxRiEPC5uE5/znG8mVAMvfJqVjLtVuPTYI=; b=LuLLrr4er+BSGhKQjssI8NHtdlFNa4e25P6w8rHTsubuRQi9V8BqJQzt40rl89NpJi TUFxBSyW6blqX9rxpUa8KALUUkOoERwYy5okleCaFKiPS0eQF8mhZD9ELr4U2+vm0XX4 zklFKOFjLfGXBjbaY4siIbb7tsK0BeShh2w9R9D2j4oRvUrlLNo5C+7cH4FfYF7qeTuo kWZlk5UGv8ZOZ7Uf+O9C0DnHXMpMwb52fs0BZ91dCysjWGpBPMMSB5X89iAYaUNt09Vd /ORqgTrpH2BznN/YlN+4p0bojHgjD4pZuFa+J9wq1OISsSbwcln0MlvDPICDXdRFXC0R P0bQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=F4RDqLUZsSxRiEPC5uE5/znG8mVAMvfJqVjLtVuPTYI=; b=Rqdc2w2j1wuV8UklJAjDa2LslBNdS0HeYJNOI6fyCHLa4U7m83ckokXSgKufpl83UL qU6dGxlXjZjT3JVxUuHMYr+e2GDLCBQ+w0J+saKHZhJ0HbKLy8wPTouBcRZRF4n7kp3j KjVHN/DS2AnF28vHScrukt7bHo2/DV9eLojDlPofpmZe7cn9eKUFciuWisTgVNlE/A7b nLB9K3idOIG+zo3khqEV7u1U4n/FexIIrFeeW4fbz2Es1mO3YIJORL01/seaVFU8nhRP f1zUd4mH/a3byPPYm2xP8X8xp+DHHQ7J0QeSQZEDvaxeObvb3osT1XnxXtz0N3Y3rdD1 LMWg== X-Gm-Message-State: ANhLgQ2wdz185UIvCj5xLr/zhgqIC2qTBnt6iL1dlEf6WrV49gvJIo0w zn3XdC7SHduja0IF7yLZ5FUMYp606quljsGfhaA= X-Received: by 2002:a2e:9949:: with SMTP id r9mr18249406ljj.135.1585067309896; Tue, 24 Mar 2020 09:28:29 -0700 (PDT) MIME-Version: 1.0 References: <20200324141722.21308-1-ap420073@gmail.com> <20200324154449.GC2513347@kroah.com> In-Reply-To: <20200324154449.GC2513347@kroah.com> From: Taehee Yoo Date: Wed, 25 Mar 2020 01:28:18 +0900 Message-ID: Subject: Re: [PATCH RESEND net 1/3] class: add class_find_and_get_file_ns() helper function To: Greg KH Cc: David Miller , Jakub Kicinski , rafael@kernel.org, j.vosburgh@gmail.com, vfalico@gmail.com, Andy Gospodarek , Netdev , LKML , mitch.a.williams@intel.com Content-Type: text/plain; charset="UTF-8" Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Wed, 25 Mar 2020 at 00:44, Greg KH wrote: > Hi Greg, Thank you for the review! > On Tue, Mar 24, 2020 at 02:17:22PM +0000, Taehee Yoo wrote: > > The new helper function is to find and get a class file. > > This function is useful for checking whether the class file is existing > > or not. This function will be used by networking stack to > > check "/sys/class/net/*" file. > > > > Reported-by: syzbot+830c6dbfc71edc4f0b8f@syzkaller.appspotmail.com > > Fixes: b76cdba9cdb2 ("[PATCH] bonding: add sysfs functionality to bonding (large)") > > Signed-off-by: Taehee Yoo > > --- > > drivers/base/class.c | 12 ++++++++++++ > > include/linux/device/class.h | 4 +++- > > 2 files changed, 15 insertions(+), 1 deletion(-) > > > > diff --git a/drivers/base/class.c b/drivers/base/class.c > > index bcd410e6d70a..dedf41f32f0d 100644 > > --- a/drivers/base/class.c > > +++ b/drivers/base/class.c > > @@ -105,6 +105,17 @@ void class_remove_file_ns(struct class *cls, const struct class_attribute *attr, > > sysfs_remove_file_ns(&cls->p->subsys.kobj, &attr->attr, ns); > > } > > > > +struct kernfs_node *class_find_and_get_file_ns(struct class *cls, > > + const char *name, > > + const void *ns) > > +{ > > + struct kernfs_node *kn = NULL; > > + > > + if (cls) > > + kn = kernfs_find_and_get_ns(cls->p->subsys.kobj.sd, name, ns); > > + return kn; > > +} > > + > > You can put the EXPORT_SYMBOL_GPL() under here. > Okay, I will change this. > And can you document what this function actually is in some kerneldoc? > Thanks, I will add some kernel-doc comment. > But, returning a kernfs_node from a driver core is _REALLY_ odd. Why do > you need this and who cares about kernfs here? > I fully agree with that. My previous version of this function was here: bool class_has_file_ns(struct class *cls, const char *name, const void *ns) { struct kernfs_node *kn = NULL; if (cls) { kn = kernfs_find_and_get_ns(cls->p->subsys.kobj.sd, name, ns); if (kn) { kernfs_put(kn); return true; } } return false; } I wanted this function could be used in general cases. But I thought this function couldn't be used in general cases. So, I made class_find_and_get_file_ns() but I couldn't find a more appropriate return type. I think I'd rather to use class_has_file_ns() instead of class_find_and_get_file_ns() because of an awkward return type. How do you think about it? > thanks, > > greg k-h Thanks a lot, Taehee Yoo