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: <BN6PR03MB3347D0598B1700D1A5C6974C99BD0@BN6PR03MB3347.namprd03.prod.outlook.com>
Date:   Fri, 15 May 2020 12:37:28 +0000
From:   "Sa, Nuno" <Nuno.Sa@...log.com>
To:     "Ardelean, Alexandru" <alexandru.Ardelean@...log.com>,
        "linux-arm-kernel@...ts.infradead.org" 
        <linux-arm-kernel@...ts.infradead.org>,
        "linux-stm32@...md-mailman.stormreply.com" 
        <linux-stm32@...md-mailman.stormreply.com>,
        "linux-kernel@...r.kernel.org" <linux-kernel@...r.kernel.org>,
        "linux-iio@...r.kernel.org" <linux-iio@...r.kernel.org>
CC:     "ludovic.desroches@...rochip.com" <ludovic.desroches@...rochip.com>,
        "nicolas.ferre@...rochip.com" <nicolas.ferre@...rochip.com>,
        "alexandre.torgue@...com" <alexandre.torgue@...com>,
        "ak@...klinger.de" <ak@...klinger.de>,
        "jic23@...nel.org" <jic23@...nel.org>,
        "eugen.hristev@...rochip.com" <eugen.hristev@...rochip.com>,
        "mcoquelin.stm32@...il.com" <mcoquelin.stm32@...il.com>,
        "alexandre.belloni@...tlin.com" <alexandre.belloni@...tlin.com>
Subject: RE: [PATCH v2 7/8] iio: core: simplify alloc alignment code

> From: Ardelean, Alexandru <alexandru.Ardelean@...log.com>
> Sent: Freitag, 15. Mai 2020 13:48
> To: linux-arm-kernel@...ts.infradead.org; linux-stm32@...md-
> mailman.stormreply.com; Sa, Nuno <Nuno.Sa@...log.com>; linux-
> kernel@...r.kernel.org; linux-iio@...r.kernel.org
> Cc: ludovic.desroches@...rochip.com; nicolas.ferre@...rochip.com;
> alexandre.torgue@...com; ak@...klinger.de; jic23@...nel.org;
> eugen.hristev@...rochip.com; mcoquelin.stm32@...il.com;
> alexandre.belloni@...tlin.com
> Subject: Re: [PATCH v2 7/8] iio: core: simplify alloc alignment code
> 
> On Fri, 2020-05-15 at 07:12 +0000, Sa, Nuno wrote:
> > Hey Alex,
> >
> > Just a small question...
> >
> > > From: linux-iio-owner@...r.kernel.org <linux-iio-
> owner@...r.kernel.org>
> > > On Behalf Of Alexandru Ardelean
> > > Sent: Donnerstag, 14. Mai 2020 15:17
> > > To: linux-iio@...r.kernel.org; linux-arm-kernel@...ts.infradead.org;
> linux-
> > > stm32@...md-mailman.stormreply.com; linux-kernel@...r.kernel.org
> > > Cc: ludovic.desroches@...rochip.com; eugen.hristev@...rochip.com;
> > > jic23@...nel.org; nicolas.ferre@...rochip.com;
> > > alexandre.belloni@...tlin.com; alexandre.torgue@...com;
> > > mcoquelin.stm32@...il.com; ak@...klinger.de; Ardelean, Alexandru
> > > <alexandru.Ardelean@...log.com>
> > > Subject: [PATCH v2 7/8] iio: core: simplify alloc alignment code
> > >
> > > There was a recent discussion about this code:
> > >   https://urldefense.com/v3/__https://lore.kernel.org/linux-
> > >
> iio/20200322165317.0b1f0674@...hlinux/__;!!A3Ni8CS0y2Y!pgdUSayJCfxMiE
> > > w8Fpv0LkEZurCSkX0sEcLnXeDSCLmhpu1xont6-vBQj3ZbCw$
> > >
> > > This looks like a good time to rework this, since any issues about it
> > > should pop-up under testing, because the iio_dev is having a bit of an
> > > overhaul and stuff being moved to iio_dev_priv.
> > >
> > > Signed-off-by: Alexandru Ardelean <alexandru.ardelean@...log.com>
> > > ---
> > >  drivers/iio/industrialio-core.c | 10 +++-------
> > >  1 file changed, 3 insertions(+), 7 deletions(-)
> > >
> > > diff --git a/drivers/iio/industrialio-core.c b/drivers/iio/industrialio-
> > > core.c
> > > index a1b29e0f8fd6..7671d36efae7 100644
> > > --- a/drivers/iio/industrialio-core.c
> > > +++ b/drivers/iio/industrialio-core.c
> > > @@ -1514,13 +1514,9 @@ struct iio_dev *iio_device_alloc(int
> sizeof_priv)
> > >  	struct iio_dev *dev;
> > >  	size_t alloc_size;
> > >
> > > -	alloc_size = sizeof(struct iio_dev_opaque);
> > > -	if (sizeof_priv) {
> > > -		alloc_size = ALIGN(alloc_size, IIO_ALIGN);
> > > -		alloc_size += sizeof_priv;
> > > -	}
> > > -	/* ensure 32-byte alignment of whole construct ? */
> > > -	alloc_size += IIO_ALIGN - 1;
> > > +	alloc_size = ALIGN(sizeof(struct iio_dev_opaque), IIO_ALIGN);
> > > +	if (sizeof_priv)
> > > +		alloc_size += ALIGN(sizeof_priv, IIO_ALIGN);
> >
> > Do we actually need to do the `ALIGN` again? It seems to me that
> `alloc_size
> > += sizeof_priv`
> > would be enough or am I missing something obvious?
> 
> Well, it's not always clear what value 'sizeof_priv' has, and whether it is
> provided already aligned.
> The requirement is usually that this data be cacheline aligned.
> 
> So, sizeof(struct iio_dev_opaque) is aligned already a few lines above, but
> the
> private information should also be aligned [given that it's an unknown value
> provided by the driver].
> I think this is mostly important, if we need to do DMA access to buffers
> allocated on the driver's state-struct, which is allocated here, and which is
> usually provided as sizeof_priv.

Yes, AFAIU this is to guarantee that the priv struct will start at an address that is 
DMA safe (cacheline-aligned). Hence, if there is any data in 'priv' that needs to be DMA
safe, we are fine...

Well, I was also misreading the code. Still, I think it should look something like:

````
alloc_size = sizeof(struct iio_dev_opaque)
if (sizeof_priv)
	alloc_size += ALIGN(alloc_size, IIO_ALIGN);
````

If there is no priv, I think we don't need the padding bytes...

- Nuno Sá

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ