From: Bjorn Helgaas <bhelgaas@google.com>
To: Simone Gotti <simone.gotti@gmail.com>
Cc: linux-pci@vger.kernel.org, linux-acpi@vger.kernel.org,
Jiang Liu <jiang.liu@linux.intel.com>,
Narendra_K@Dell.com
Subject: Re: [PATCH 1/1] ACPI / PCI: Fix "Operation not permitted" error reading sysfs acpi_index and label files.
Date: Wed, 2 Jul 2014 16:19:43 -0600 [thread overview]
Message-ID: <20140702221943.GD28852@google.com> (raw)
In-Reply-To: <1403103330-17874-1-git-send-email-simone.gotti@gmail.com>
On Wed, Jun 18, 2014 at 04:55:30PM +0200, Simone Gotti wrote:
> If the _DSM method returns an unicode string then the acpi type is not
> ACPI_TYPE_STRING but ACPI_TYPE_BUFFER.
>
> Before commit 1d0fcef732832432aee47cb75bf4a2cb3107be64 the dsm_get_label
> function wasn't checking the second element type and it was correctly working only with
> ACPI_TYPE_BUFFER as the call to dsm_label_utf16s_to_utf8s will return bad
> encoding for an ascii string.
>
> Also fix dsm_label_utf16s_to_utf8s to use acpi_object->buffer instead of
> acpi_object->string.
>
> This fixes changed onboard interfaces names generated by udev net_id internal as
> reading from the acpi_index file returned "Operation not permitted" error.
>
> Signed-off-by: Simone Gotti <simone.gotti@gmail.com>
Applied with Jiang's reviewed-by to pci/misc for v3.17. I also added a
stable tag for v3.14+. Thanks!
> ---
> drivers/pci/pci-label.c | 18 ++++++++++++------
> 1 file changed, 12 insertions(+), 6 deletions(-)
>
> diff --git a/drivers/pci/pci-label.c b/drivers/pci/pci-label.c
> index a3fbe20..2ab1b47 100644
> --- a/drivers/pci/pci-label.c
> +++ b/drivers/pci/pci-label.c
> @@ -161,8 +161,8 @@ enum acpi_attr_enum {
> static void dsm_label_utf16s_to_utf8s(union acpi_object *obj, char *buf)
> {
> int len;
> - len = utf16s_to_utf8s((const wchar_t *)obj->string.pointer,
> - obj->string.length,
> + len = utf16s_to_utf8s((const wchar_t *)obj->buffer.pointer,
> + obj->buffer.length,
> UTF16_LITTLE_ENDIAN,
> buf, PAGE_SIZE);
> buf[len] = '\n';
> @@ -187,16 +187,22 @@ static int dsm_get_label(struct device *dev, char *buf,
> tmp = obj->package.elements;
> if (obj->type == ACPI_TYPE_PACKAGE && obj->package.count == 2 &&
> tmp[0].type == ACPI_TYPE_INTEGER &&
> - tmp[1].type == ACPI_TYPE_STRING) {
> + (tmp[1].type == ACPI_TYPE_STRING ||
> + tmp[1].type == ACPI_TYPE_BUFFER)) {
> /*
> * The second string element is optional even when
> * this _DSM is implemented; when not implemented,
> * this entry must return a null string.
> */
> - if (attr == ACPI_ATTR_INDEX_SHOW)
> + if (attr == ACPI_ATTR_INDEX_SHOW) {
> scnprintf(buf, PAGE_SIZE, "%llu\n", tmp->integer.value);
> - else if (attr == ACPI_ATTR_LABEL_SHOW)
> - dsm_label_utf16s_to_utf8s(tmp + 1, buf);
> + } else if (attr == ACPI_ATTR_LABEL_SHOW) {
> + if (tmp[1].type == ACPI_TYPE_STRING)
> + scnprintf(buf, PAGE_SIZE, "%s\n",
> + tmp[1].string.pointer);
> + else if (tmp[1].type == ACPI_TYPE_BUFFER)
> + dsm_label_utf16s_to_utf8s(tmp + 1, buf);
> + }
> len = strlen(buf) > 0 ? strlen(buf) : -1;
> }
>
> --
> 2.0.0
>
> --
> To unsubscribe from this list: send the line "unsubscribe linux-pci" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at http://vger.kernel.org/majordomo-info.html
prev parent reply other threads:[~2014-07-02 22:19 UTC|newest]
Thread overview: 4+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-06-18 14:51 [PATCH 0/1] ACPI / PCI: Fix "Operation not permitted" error reading sysfs acpi_index and label files Simone Gotti
2014-06-18 14:55 ` [PATCH 1/1] " Simone Gotti
2014-06-18 16:22 ` Jiang Liu
2014-07-02 22:19 ` Bjorn Helgaas [this message]
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=20140702221943.GD28852@google.com \
--to=bhelgaas@google.com \
--cc=Narendra_K@Dell.com \
--cc=jiang.liu@linux.intel.com \
--cc=linux-acpi@vger.kernel.org \
--cc=linux-pci@vger.kernel.org \
--cc=simone.gotti@gmail.com \
/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.