lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <20120130225638.GO23916@ZenIV.linux.org.uk>
Date:	Mon, 30 Jan 2012 22:56:38 +0000
From:	Al Viro <viro@...IV.linux.org.uk>
To:	Greg KH <greg@...ah.com>
Cc:	Alan Cox <alan@...rguk.ukuu.org.uk>,
	"Eric W. Biederman" <ebiederm@...ssion.com>,
	Jiri Slaby <jslaby@...e.cz>,
	LKML <linux-kernel@...r.kernel.org>,
	systemd-devel@...ts.freedesktop.org
Subject: Re: sysfs regression: wrong link counts

On Mon, Jan 30, 2012 at 10:43:50PM +0000, Al Viro wrote:
> On Mon, Jan 30, 2012 at 02:27:17PM -0800, Greg KH wrote:
> > On Mon, Jan 30, 2012 at 10:10:59PM +0000, Alan Cox wrote:
> > > > Isn't there some other "proper" way of doing this in userspace, or is
> > > > this really the correct way?
> > > 
> > > You can look at the S_IFMT bits and stuff however link count indicating
> > > number of subdirectories is a standard Unix thing and used by many quite
> > > mundane tools as an optimisation.
> > 
> > Ah, yeah, that is easier.
> > 
> > Eric, care to fix this or want me to revert it?
> 
> Fix _what_?  Userland shite quoted upthread?  Because that's where the bug
> is - the mundane tools mentioned by Alan treat 1 in st_nlink as "no
> information about the number of subdirectories".  And shite might be too
> mild a term for the little gem in question, really...

To repeat this piece of bogosity for those who might've missed it:

/* returns !0 if sysfs filesystem was found, 0 otherwise */
int sensors_init_sysfs(void)
{
        struct stat statbuf;

        snprintf(sensors_sysfs_mount, NAME_MAX, "%s", "/sys");
        if (stat(sensors_sysfs_mount, &statbuf) < 0
         || statbuf.st_nlink <= 2)      /* Empty directory */
                return 0;

        return 1;
}

which is completely bogus - contrary to what it says in comments, it does
*not* check anything about sysfs (or directories being empty).  Checking
that sysfs is mounted on /sys could be done by statfs(2) and checking
->f_type, or, considering what the code in lib/sysfs.c is doing, just
checking that /sys/class is readable and failing otherwise.

Sigh...
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ