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
| ||
|
Message-ID: <20171227101834.qfjsy6eqaojiifsr@node.shutemov.name> Date: Wed, 27 Dec 2017 13:18:34 +0300 From: "Kirill A. Shutemov" <kirill@...temov.name> To: Matthew Wilcox <willy@...radead.org> Cc: linux-kernel@...r.kernel.org, Matthew Wilcox <mawilcox@...rosoft.com>, Ross Zwisler <ross.zwisler@...ux.intel.com>, David Howells <dhowells@...hat.com>, Shaohua Li <shli@...nel.org>, Jens Axboe <axboe@...nel.dk>, Rehas Sachdeva <aquannie@...il.com>, Marc Zyngier <marc.zyngier@....com>, linux-mm@...ck.org, linux-fsdevel@...r.kernel.org, linux-f2fs-devel@...ts.sourceforge.net, linux-nilfs@...r.kernel.org, linux-btrfs@...r.kernel.org, linux-xfs@...r.kernel.org, linux-usb@...r.kernel.org, linux-raid@...r.kernel.org Subject: Re: [PATCH v5 03/78] xarray: Add the xa_lock to the radix_tree_root On Tue, Dec 26, 2017 at 07:58:15PM -0800, Matthew Wilcox wrote: > On Tue, Dec 26, 2017 at 07:43:40PM -0800, Matthew Wilcox wrote: > > Also add the xa_lock() and xa_unlock() family of wrappers to make it > > easier to use the lock. If we could rely on -fplan9-extensions in > > the compiler, we could avoid all of this syntactic sugar, but that > > wasn't added until gcc 4.6. > > Oh, in case anyone's wondering, here's how I'd do it with plan9 extensions: > > struct xarray { > spinlock_t; > int xa_flags; > void *xa_head; > }; > > ... > spin_lock_irqsave(&mapping->pages, flags); > __delete_from_page_cache(page, NULL); > spin_unlock_irqrestore(&mapping->pages, flags); > ... > > The plan9 extensions permit passing a pointer to a struct which has an > unnamed element to a function which is expecting a pointer to the type > of that element. The compiler does any necessary arithmetic to produce > a pointer. It's exactly as if I had written: > > spin_lock_irqsave(&mapping->pages.xa_lock, flags); > __delete_from_page_cache(page, NULL); > spin_unlock_irqrestore(&mapping->pages.xa_lock, flags); > > More details here: https://9p.io/sys/doc/compiler.html Yeah, that's neat. Dealing with old compilers is frustrating... -- Kirill A. Shutemov
Powered by blists - more mailing lists