Date: Wed, 22 Nov 2017 22:15:48 -0500 From: Shawn Webb <shawn.webb@hardenedbsd.org> To: Mateusz Guzik <mjg@FreeBSD.org> Cc: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: Re: svn commit: r326110 - head/sys/kern Message-ID: <20171123031548.rd5vmsgghsmuvjs4@mutt-hbsd> In-Reply-To: <201711222352.vAMNq5Bh071788@repo.freebsd.org> References: <201711222352.vAMNq5Bh071788@repo.freebsd.org>
next in thread | previous in thread | raw e-mail | index | archive | help
--cgmojfw26kqwmzra Content-Type: text/plain; charset=us-ascii Content-Disposition: inline Content-Transfer-Encoding: quoted-printable On Wed, Nov 22, 2017 at 11:52:05PM +0000, Mateusz Guzik wrote: > Author: mjg > Date: Wed Nov 22 23:52:05 2017 > New Revision: 326110 > URL: https://svnweb.freebsd.org/changeset/base/326110 >=20 > Log: > rwlock: don't check for curthread's read lock count in the fast path >=20 > Modified: > head/sys/kern/kern_rwlock.c >=20 > Modified: head/sys/kern/kern_rwlock.c > =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D > --- head/sys/kern/kern_rwlock.c Wed Nov 22 23:10:20 2017 (r326109) > +++ head/sys/kern/kern_rwlock.c Wed Nov 22 23:52:05 2017 (r326110) > @@ -364,12 +364,20 @@ _rw_wunlock_cookie(volatile uintptr_t *c, const cha= r * > * is unlocked and has no writer waiters or spinners. Failing otherwise > * prioritizes writers before readers. > */ > -#define RW_CAN_READ(td, _rw) \ > - (((_rw) & (RW_LOCK_READ | RW_LOCK_WRITE_WAITERS | RW_LOCK_WRITE_SPIN= NER)) =3D=3D\ > - RW_LOCK_READ || ((td)->td_rw_rlocks && (_rw) & RW_LOCK_READ)) > +static bool __always_inline > +__rw_can_read(struct thread *td, uintptr_t v, bool fp) > +{ > =20 > + if ((v & (RW_LOCK_READ | RW_LOCK_WRITE_WAITERS | RW_LOCK_WRITE_SPINNER)) > + =3D=3D RW_LOCK_READ) > + return (true); > + if (!fp && td->td_rw_rlocks && (v & RW_LOCK_READ)) > + return (true); > + return (false); > +} This bit of the patch breaks buildkernel. You left a consumer of RW_CAN_READ on line 554: MPASS(!RW_CAN_READ(td, v)); Thanks, --=20 Shawn Webb Cofounder and Security Engineer HardenedBSD GPG Key ID: 0x6A84658F52456EEE GPG Key Fingerprint: 2ABA B6BD EF6A F486 BE89 3D9E 6A84 658F 5245 6EEE --cgmojfw26kqwmzra Content-Type: application/pgp-signature; name="signature.asc" -----BEGIN PGP SIGNATURE----- iQIzBAEBCAAdFiEEKrq2ve9q9Ia+iT2eaoRlj1JFbu4FAloWPWIACgkQaoRlj1JF bu5Lfg/9Fv0BENwM2MgPc7RQnzn9wvjQzFVWrXq+oWHZJ4SQtutULA6epLvX3psG JXt9HeOkPP5GqKA92LUO06kb9NAenZe8EsrkjL/J09KLVjS7Xa8qSw+B56uBIXeW kv1+ufv3uCN9Q4mxVbNmbwLryuwKKuZxSvIFjo2a+Zmu5G5dObF3w9JALl8K74KU cNQXlzaMQ8tLxRhtwaiGTSi7yB/pXdwg0B6WfLvLz5YVrH1XDkq7Zvl793bl+a7G O+TOF00R8vTYYb0KQpGQn8knfrTpdQc/5nDAnm4XoMtpl1/uW+3utcNqMGYd9Hbk vwPC9e4EOUZw1sVFzjDs0zRxuZ+7zQ6Dlo319gnM41RqPPyLH6HcrErNL3Fq5WPk 8f3lAyVU7TjUxztvzDpP1CZmYgLOBzi9gdK8byLiuQCBe7WqhE7ThXwrWaQHpYrs /s8jvdb5wGur3WFi1vXWHboxfIRI/tnv6c6QFt7fMVFUDa2pPC4I6d9u6bmI7eKM jBw126iBuum05yp8HARfoSDWkd89iZ9Wb1Y/sXhNQ3mnHkHdVVunZI26620ikvF3 yfHjXmHkY5kChpiJmJ+bOfjPQ0TLr6CR/S0clFfqvQUVNGBGxJ3ZceA+uLkgS4k+ VQ+liQ8q+x1y+KuHcN04ol271wmbnua7Wd4BsZQ7uBP5mID2QX4= =W5Wx -----END PGP SIGNATURE----- --cgmojfw26kqwmzra--
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20171123031548.rd5vmsgghsmuvjs4>