All of lore.kernel.org
 help / color / mirror / Atom feed
From: Linus Walleij <linus.walleij-QSEj5FYQhm4dnm+yROfE0A@public.gmane.org>
To: Geert Uytterhoeven <geert-Td1EMuHUCqxL1ZNQvxDV9g@public.gmane.org>
Cc: Mark Brown <broonie-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org>,
	linux-spi <linux-spi-u79uwXL29TY76Z2rM5mHXA@public.gmane.org>
Subject: Re: [PATCH 4/5] spi: spi-gpio: Make optional chipselect handling more explicit
Date: Wed, 3 Jan 2018 10:40:52 +0100	[thread overview]
Message-ID: <CACRpkdaEyKcWPY543CZz0grepAhVijefh_+FCsPd3g+83hv2Fg@mail.gmail.com> (raw)
In-Reply-To: <CAMuHMdVeTQOxRMJaohGFtw6LUtwQb6H46rsrf1fRFno9KBQXXA-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>

On Wed, Jan 3, 2018 at 10:17 AM, Geert Uytterhoeven
<geert-Td1EMuHUCqxL1ZNQvxDV9g@public.gmane.org> wrote:
> On Wed, Jan 3, 2018 at 9:58 AM, Linus Walleij <linus.walleij-QSEj5FYQhm4dnm+yROfE0A@public.gmane.org> wrote:
>> On Wed, Jan 3, 2018 at 9:21 AM, Geert Uytterhoeven <geert-Td1EMuHUCqxL1ZNQvxDV9g@public.gmane.org> wrote:
>>
>>> Hmm, having two indicators for the same feature (spi_gpio->has_cs == true and
>>> spi_gpio->cs_gpios[0] = NULL), and the need to keep them in sync in the
>>> future, also complicates things.
>>
>> The patch does not do this.
>>
>> It removes the latter and adds the former. That is why it removes the
>> assignment of NULL to cs_gpios[0].
>
> So what is cs_gpios[0] if has_cs == true? Oh, it will point to unallocated
> memory right after the structure...

I think it is a problem with all dynamic arrays: they are prone to out-of-bounds
accesses.

That in turn comes from the following design pattern i the spi alloc_master()
helper:

        status = spi_gpio_request(pdata, dev_name(&pdev->dev), &master_flags);
        if (status < 0)
                return status;

        master = spi_alloc_master(&pdev->dev, sizeof(*spi_gpio) +
                                        (sizeof(unsigned long) * num_devices));
        if (!master) {
                status = -ENOMEM;
                goto gpio_free;
        }
        spi_gpio = spi_master_get_devdata(master);

So someone wanted to save a slab by using this instead of allocating
the array dynamically. It's not a very admirable coding style to begin
with. I doubt the system gains much from this.

If you agree I can rewrite it to have struct gpio_desc ** and
dynamically allocate that to the number of descriptors with devm_kzalloc()
instead, that is more in line with kernel patterns and this memory
optimization anyways seems a bit overdone anyways.

Yours,
Linus Walleij
--
To unsubscribe from this list: send the line "unsubscribe linux-spi" in
the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

  parent reply	other threads:[~2018-01-03  9:40 UTC|newest]

Thread overview: 25+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-01-01 13:37 [PATCH 0/5] Rewrite GPIO SPI to use descriptors Linus Walleij
     [not found] ` <20180101133749.29567-1-linus.walleij-QSEj5FYQhm4dnm+yROfE0A@public.gmane.org>
2018-01-01 13:37   ` [PATCH 1/5] gpio: of: Support SPI nonstandard GPIO properties Linus Walleij
     [not found]     ` <20180101133749.29567-2-linus.walleij-QSEj5FYQhm4dnm+yROfE0A@public.gmane.org>
2018-01-03 15:04       ` Mark Brown
2018-01-03 15:23       ` Rob Herring
     [not found]         ` <CAL_JsqLH4pqptAkpw2CHPRe=6dR3k1iBPM8g7yMFUHnYmm7L9w-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2018-01-04 20:24           ` Linus Walleij
     [not found]             ` <CACRpkdZ9yGm9K4iF=jR8bjzZR6cU7vEV8tNz6i7DfcE=Jhp2yw-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2018-01-05 10:21               ` Andy Shevchenko
2018-01-01 13:37   ` [PATCH 2/5] spi: spi-gpio: Rewrite to use GPIO descriptors Linus Walleij
     [not found]     ` <20180101133749.29567-3-linus.walleij-QSEj5FYQhm4dnm+yROfE0A@public.gmane.org>
2018-01-03 15:55       ` Mark Brown
2018-01-05  7:34       ` Olof Johansson
2018-01-05 10:33       ` Andy Shevchenko
2018-01-01 13:37   ` [PATCH 3/5] spi: spi-gpio: Augment device tree bindings Linus Walleij
     [not found]     ` <20180101133749.29567-4-linus.walleij-QSEj5FYQhm4dnm+yROfE0A@public.gmane.org>
2018-02-14 16:28       ` Applied "spi: spi-gpio: Augment device tree bindings" to the spi tree Mark Brown
2018-01-01 13:37   ` [PATCH 4/5] spi: spi-gpio: Make optional chipselect handling more explicit Linus Walleij
     [not found]     ` <20180101133749.29567-5-linus.walleij-QSEj5FYQhm4dnm+yROfE0A@public.gmane.org>
2018-01-03  8:21       ` Geert Uytterhoeven
     [not found]         ` <CAMuHMdV5tdm0diunWg2BXxgVsG0FqwTgXXXBD+p9nbOEXcd59Q-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2018-01-03  8:58           ` Linus Walleij
     [not found]             ` <CACRpkdZaLKUs+9BP_Tp8bhdCur+CHaTK1RsS=i2na4Edqz1VGw-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2018-01-03  9:17               ` Geert Uytterhoeven
     [not found]                 ` <CAMuHMdVeTQOxRMJaohGFtw6LUtwQb6H46rsrf1fRFno9KBQXXA-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2018-01-03  9:40                   ` Linus Walleij [this message]
     [not found]                     ` <CACRpkdaEyKcWPY543CZz0grepAhVijefh_+FCsPd3g+83hv2Fg-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2018-01-03 16:05                       ` Mark Brown
2018-01-01 13:37   ` [PATCH 5/5] spi: spi-gpio: Delete references to non-GENERIC_BITBANG Linus Walleij
     [not found]     ` <20180101133749.29567-6-linus.walleij-QSEj5FYQhm4dnm+yROfE0A@public.gmane.org>
2018-01-03 16:10       ` Mark Brown
2018-01-02  8:15   ` [PATCH 0/5] Rewrite GPIO SPI to use descriptors Linus Walleij
2018-01-02 18:42   ` Trent Piepho
     [not found]     ` <1514918569.26695.151.camel-cgc2CodaaHDQT0dZR+AlfA@public.gmane.org>
2018-01-02 23:17       ` Linus Walleij
     [not found]         ` <CACRpkdYRJ=jR4B2Ko2P1axwGMKob2vHkY2h8cMc9t9Qi7n52sQ-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2018-01-03 16:24           ` Mark Brown
     [not found]             ` <20180103162449.GG28713-GFdadSzt00ze9xe1eoZjHA@public.gmane.org>
2018-01-06 23:18               ` Linus Walleij

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=CACRpkdaEyKcWPY543CZz0grepAhVijefh_+FCsPd3g+83hv2Fg@mail.gmail.com \
    --to=linus.walleij-qsej5fyqhm4dnm+yrofe0a@public.gmane.org \
    --cc=broonie-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org \
    --cc=geert-Td1EMuHUCqxL1ZNQvxDV9g@public.gmane.org \
    --cc=linux-spi-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \
    /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
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.