Message ID | 20240328035540.13194-1-raag.jadav@intel.com (mailing list archive) |
---|---|
State | In Next |
Delegated to: | Rafael Wysocki |
Headers | show |
Series | [v1] ACPI: bus: allow _UID matching for integer zero | expand |
On Thu, Mar 28, 2024 at 09:25:40AM +0530, Raag Jadav wrote: > Commit b2b32a173881 ("ACPI: bus: update acpi_dev_hid_uid_match() to > support multiple types") added _UID matching support for both integer > and string types, which satisfies NULL @uid2 argument for string types > using inversion, but this logic prevents _UID comparision in case the > argument is integer 0, which may result in false positives. > > Fix this using _Generic(), which will allow NULL @uid2 argument for > string types as well as _UID matching for all possible integer values. > > Fixes: b2b32a173881 ("ACPI: bus: update acpi_dev_hid_uid_match() to support multiple types") > Signed-off-by: Raag Jadav <raag.jadav@intel.com> Bump. Anything I can do to move this forward? Raag
On Thu, Mar 28, 2024 at 09:25:40AM +0530, Raag Jadav wrote: > Commit b2b32a173881 ("ACPI: bus: update acpi_dev_hid_uid_match() to > support multiple types") added _UID matching support for both integer > and string types, which satisfies NULL @uid2 argument for string types > using inversion, but this logic prevents _UID comparision in case the ^^^^^^^^^^^ Typo: comparison > argument is integer 0, which may result in false positives. > > Fix this using _Generic(), which will allow NULL @uid2 argument for > string types as well as _UID matching for all possible integer values. > > Fixes: b2b32a173881 ("ACPI: bus: update acpi_dev_hid_uid_match() to support multiple types") > Signed-off-by: Raag Jadav <raag.jadav@intel.com> Reviewed-by: Mika Westerberg <mika.westerberg@linux.intel.com>
On Wed, Apr 10, 2024 at 8:00 AM Raag Jadav <raag.jadav@intel.com> wrote: > > On Thu, Mar 28, 2024 at 09:25:40AM +0530, Raag Jadav wrote: > > Commit b2b32a173881 ("ACPI: bus: update acpi_dev_hid_uid_match() to > > support multiple types") added _UID matching support for both integer > > and string types, which satisfies NULL @uid2 argument for string types > > using inversion, but this logic prevents _UID comparision in case the > > argument is integer 0, which may result in false positives. > > > > Fix this using _Generic(), which will allow NULL @uid2 argument for > > string types as well as _UID matching for all possible integer values. > > > > Fixes: b2b32a173881 ("ACPI: bus: update acpi_dev_hid_uid_match() to support multiple types") > > Signed-off-by: Raag Jadav <raag.jadav@intel.com> > > Bump. > > Anything I can do to move this forward? Should be there in linux-next already, isn't it? Maybe I forgot to send an "applied" message.
diff --git a/include/acpi/acpi_bus.h b/include/acpi/acpi_bus.h index 5de954e2b18a..683458de5a81 100644 --- a/include/acpi/acpi_bus.h +++ b/include/acpi/acpi_bus.h @@ -911,17 +911,19 @@ static inline bool acpi_int_uid_match(struct acpi_device *adev, u64 uid2) * acpi_dev_hid_uid_match - Match device by supplied HID and UID * @adev: ACPI device to match. * @hid2: Hardware ID of the device. - * @uid2: Unique ID of the device, pass 0 or NULL to not check _UID. + * @uid2: Unique ID of the device, pass NULL to not check _UID. * * Matches HID and UID in @adev with given @hid2 and @uid2. Absence of @uid2 * will be treated as a match. If user wants to validate @uid2, it should be * done before calling this function. * - * Returns: %true if matches or @uid2 is 0 or NULL, %false otherwise. + * Returns: %true if matches or @uid2 is NULL, %false otherwise. */ #define acpi_dev_hid_uid_match(adev, hid2, uid2) \ (acpi_dev_hid_match(adev, hid2) && \ - (!(uid2) || acpi_dev_uid_match(adev, uid2))) + /* Differentiate integer 0 from NULL @uid2 */ \ + (_Generic(uid2, ACPI_STR_TYPES(!(uid2)), default: 0) || \ + acpi_dev_uid_match(adev, uid2))) void acpi_dev_clear_dependencies(struct acpi_device *supplier); bool acpi_dev_ready_for_enumeration(const struct acpi_device *device);
Commit b2b32a173881 ("ACPI: bus: update acpi_dev_hid_uid_match() to support multiple types") added _UID matching support for both integer and string types, which satisfies NULL @uid2 argument for string types using inversion, but this logic prevents _UID comparision in case the argument is integer 0, which may result in false positives. Fix this using _Generic(), which will allow NULL @uid2 argument for string types as well as _UID matching for all possible integer values. Fixes: b2b32a173881 ("ACPI: bus: update acpi_dev_hid_uid_match() to support multiple types") Signed-off-by: Raag Jadav <raag.jadav@intel.com> --- include/acpi/acpi_bus.h | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-)