[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <CAHp75VdY3_EX7w1tpAqy8_D1r6TsUR2OyT4FstrLEK8z+T+yEQ@mail.gmail.com>
Date: Sat, 27 May 2017 18:57:38 +0300
From: Andy Shevchenko <andy.shevchenko@...il.com>
To: Mika Westerberg <mika.westerberg@...ux.intel.com>
Cc: Greg Kroah-Hartman <gregkh@...uxfoundation.org>,
Andreas Noever <andreas.noever@...il.com>,
Michael Jamet <michael.jamet@...el.com>,
Yehezkel Bernat <yehezkel.bernat@...el.com>,
Lukas Wunner <lukas@...ner.de>,
Amir Levy <amir.jer.levy@...el.com>,
Andy Lutomirski <luto@...nel.org>,
Mario Limonciello <Mario.Limonciello@...l.com>,
Jared.Dominguez@...l.com,
Andy Shevchenko <andriy.shevchenko@...ux.intel.com>,
"linux-kernel@...r.kernel.org" <linux-kernel@...r.kernel.org>
Subject: Re: [PATCH v2 13/27] thunderbolt: Read vendor and device name from DROM
On Fri, May 26, 2017 at 7:09 PM, Mika Westerberg
<mika.westerberg@...ux.intel.com> wrote:
> The device DROM contains name of the vendor and device among other
> things. Extract this information and expose it to the userspace via two
> new attributes.
> +static const char *parse_name(const u8 *data, u8 len)
Hmm... (name)
> +{
> + char *name;
> +
> + name = kmemdup(data, len, GFP_KERNEL);
Since it's ASCII by specification it may make sense to use
sw->..._name = kstrndup(entry->data, sizeof(*header), GFP_KERNEL);
if (!sw->..._name)
return -ENOMEM;
just in place, instead of this entire function.
> + if (name)
> + name[len - 1] = '\0';
> + return name;
> +}
> +
> +static int tb_drom_parse_entry_generic(struct tb_switch *sw,
> + struct tb_drom_entry_header *header)
> +{
> + const struct tb_drom_entry_generic *entry =
> + (const struct tb_drom_entry_generic *)header;
> +
> + switch (header->index) {
> + case 1:
> + /* Length includes 2 bytes header so remove it before copy */
> + sw->vendor_name = parse_name(entry->data,
> + header->len - sizeof(*header));
> + if (!sw->vendor_name)
> + return -ENOMEM;
> + break;
> +
> + case 2:
> + sw->device_name = parse_name(entry->data,
> + header->len - sizeof(*header));
> + if (!sw->device_name)
> + return -ENOMEM;
> + break;
> + }
> +
> + return 0;
> +}
--
With Best Regards,
Andy Shevchenko
Powered by blists - more mailing lists