staging/ipack: Fix bug introduced by IPack device matching
~0 can not be casted to u8. Instead of using the IPACK_ANY_ID for the format field we introduce a new IPACK_ANY_FORMAT specifically for that field and defined as 0xff. Reported-by: Dan Carpenter <dan.carpenter@oracle.com> Signed-off-by: Jens Taprogge <jens.taprogge@taprogge.org> Acked-by: Samuel Iglesias Gonsálvez <siglesias@igalia.com> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
Родитель
7953e44cef
Коммит
5948ae27fb
|
@ -31,7 +31,8 @@ static inline const struct ipack_device_id *
|
|||
ipack_match_one_device(const struct ipack_device_id *id,
|
||||
const struct ipack_device *device)
|
||||
{
|
||||
if ((id->format == IPACK_ANY_ID || id->format == device->id_format) &&
|
||||
if ((id->format == IPACK_ANY_FORMAT ||
|
||||
id->format == device->id_format) &&
|
||||
(id->vendor == IPACK_ANY_ID || id->vendor == device->id_vendor) &&
|
||||
(id->device == IPACK_ANY_ID || id->device == device->id_device))
|
||||
return id;
|
||||
|
|
|
@ -600,6 +600,7 @@ struct x86_cpu_id {
|
|||
#define X86_MODEL_ANY 0
|
||||
#define X86_FEATURE_ANY 0 /* Same as FPU, you can't test for that */
|
||||
|
||||
#define IPACK_ANY_FORMAT 0xff
|
||||
#define IPACK_ANY_ID (~0)
|
||||
struct ipack_device_id {
|
||||
__u8 format; /* Format version or IPACK_ANY_ID */
|
||||
|
|
|
@ -973,7 +973,7 @@ static int do_ipack_entry(const char *filename,
|
|||
id->vendor = TO_NATIVE(id->vendor);
|
||||
id->device = TO_NATIVE(id->device);
|
||||
strcpy(alias, "ipack:");
|
||||
ADD(alias, "f", id->format != IPACK_ANY_ID, id->format);
|
||||
ADD(alias, "f", id->format != IPACK_ANY_FORMAT, id->format);
|
||||
ADD(alias, "v", id->vendor != IPACK_ANY_ID, id->vendor);
|
||||
ADD(alias, "d", id->device != IPACK_ANY_ID, id->device);
|
||||
add_wildcard(alias);
|
||||
|
|
Загрузка…
Ссылка в новой задаче