From: Bartosz Golaszewski <brgl@bgdev.pl>
To: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
Cc: Jonathan Cameron <jic23@kernel.org>,
Hartmut Knaack <knaack.h@gmx.de>,
Lars-Peter Clausen <lars@metafoo.de>,
Peter Meerwald-Stadler <pmeerw@pmeerw.net>,
Michal Simek <michal.simek@xilinx.com>,
Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
Guenter Roeck <linux@roeck-us.net>,
linux-iio <linux-iio@vger.kernel.org>,
Linux ARM <linux-arm-kernel@lists.infradead.org>,
Linux Kernel Mailing List <linux-kernel@vger.kernel.org>,
Bartosz Golaszewski <bgolaszewski@baylibre.com>
Subject: Re: [PATCH v8 1/3] devres: provide devm_krealloc()
Date: Fri, 21 Aug 2020 18:00:02 +0200 [thread overview]
Message-ID: <CAMRc=MfLkBRKu9ofSUGH=k3hxiJk-g=MMvab2awcsmeyF4RAKg@mail.gmail.com> (raw)
In-Reply-To: <20200821110403.GP1891694@smile.fi.intel.com>
On Fri, Aug 21, 2020 at 1:04 PM Andy Shevchenko
<andriy.shevchenko@linux.intel.com> wrote:
>
> On Fri, Aug 21, 2020 at 01:51:19PM +0300, Andy Shevchenko wrote:
> > On Fri, Aug 21, 2020 at 10:59:19AM +0200, Bartosz Golaszewski wrote:
> > > On Fri, Aug 21, 2020 at 10:35 AM Andy Shevchenko
> > > <andriy.shevchenko@linux.intel.com> wrote:
> > > > On Thu, Aug 20, 2020 at 08:51:08PM +0200, Bartosz Golaszewski wrote:
>
> ...
>
> > > > > +static struct devres *to_devres(void *data)
> > > > > +{
> > > > > + return data - ALIGN(sizeof(struct devres), ARCH_KMALLOC_MINALIGN);
> > > > > +}
> > > > > +
> > > > > +static size_t devres_data_size(size_t total_size)
> > > > > +{
> > > > > + return total_size - ALIGN(sizeof(struct devres), ARCH_KMALLOC_MINALIGN);
> > > > > +}
>
> > > The data pointer in struct devres is defined as:
> > >
> > > u8 __aligned(ARCH_KMALLOC_MINALIGN) data[];
> > >
> > > And this value (assigned the value of ARCH_DMA_MINALIGN) varies from
> > > one arch to another. I wasn't really sure if offsetof() would work for
> > > every case so I went with something very explicit.
> >
> > I have checked with a small program simulating to_devres() with your variant,
> > offsetof() and container_of().
> >
> > The result is this: if MINALIGN < sizeof(long) and since struct is unpacked the
> > offsetof(), and thus container_of(), gives correct result, while ALIGN()
> > approach mistakenly moves pointer too back.
>
> ...
>
> > I think you need to change this to use container_of() and offsetof().
>
> To be clear, there is probably no real problem, except unlikely possible
> MINALIGN=4 on 64-bit arch, but for sake of the correctness.
>
Thanks for taking the time to check it. I'll switch to container_of()
for (hopefully) the last iteration.
Bart
next prev parent reply other threads:[~2020-08-21 16:00 UTC|newest]
Thread overview: 10+ messages / expand[flat|nested] mbox.gz Atom feed top
2020-08-20 18:51 [PATCH v8 0/3] devres: provide and use devm_krealloc() Bartosz Golaszewski
2020-08-20 18:51 ` [PATCH v8 1/3] devres: provide devm_krealloc() Bartosz Golaszewski
2020-08-21 8:15 ` Andy Shevchenko
2020-08-21 8:18 ` Andy Shevchenko
2020-08-21 8:59 ` Bartosz Golaszewski
2020-08-21 10:51 ` Andy Shevchenko
2020-08-21 11:04 ` Andy Shevchenko
2020-08-21 16:00 ` Bartosz Golaszewski [this message]
2020-08-20 18:51 ` [PATCH v8 2/3] hwmon: pmbus: use more devres helpers Bartosz Golaszewski
2020-08-20 18:51 ` [PATCH v8 3/3] iio: adc: xilinx-xadc: use devm_krealloc() Bartosz Golaszewski
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to='CAMRc=MfLkBRKu9ofSUGH=k3hxiJk-g=MMvab2awcsmeyF4RAKg@mail.gmail.com' \
--to=brgl@bgdev.pl \
--cc=andriy.shevchenko@linux.intel.com \
--cc=bgolaszewski@baylibre.com \
--cc=gregkh@linuxfoundation.org \
--cc=jic23@kernel.org \
--cc=knaack.h@gmx.de \
--cc=lars@metafoo.de \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=linux-iio@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux@roeck-us.net \
--cc=michal.simek@xilinx.com \
--cc=pmeerw@pmeerw.net \
--subject='Re: [PATCH v8 1/3] devres: provide devm_krealloc()' \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).