[PATCH v2] staging/ipack: Fix bug introduced by IPack device matching

Samuel Iglesias Gonsálvez siglesias at igalia.com
Fri Sep 7 08:41:44 UTC 2012


On Fri, 2012-09-07 at 10:29 +0200, Jens Taprogge wrote:
> ~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 at oracle.com>
> Signed-off-by: Jens Taprogge <jens.taprogge at taprogge.org>
> ---
>  drivers/staging/ipack/ipack.c   |    3 ++-
>  include/linux/mod_devicetable.h |    1 +
>  scripts/mod/file2alias.c        |    2 +-
>  3 files changed, 4 insertions(+), 2 deletions(-)
> 
> diff --git a/drivers/staging/ipack/ipack.c b/drivers/staging/ipack/ipack.c
> index b3736c0..659aadc 100644
> --- a/drivers/staging/ipack/ipack.c
> +++ b/drivers/staging/ipack/ipack.c
> @@ -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;
> diff --git a/include/linux/mod_devicetable.h b/include/linux/mod_devicetable.h
> index 999c4c2..70c6a35 100644
> --- a/include/linux/mod_devicetable.h
> +++ b/include/linux/mod_devicetable.h
> @@ -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 */
> diff --git a/scripts/mod/file2alias.c b/scripts/mod/file2alias.c
> index 3c22bda..df4fc23 100644
> --- a/scripts/mod/file2alias.c
> +++ b/scripts/mod/file2alias.c
> @@ -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);

Acked-by: Samuel Iglesias Gonsálvez <siglesias at igalia.com>

Thanks,

Sam
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 198 bytes
Desc: This is a digitally signed message part
URL: <http://driverdev.linuxdriverproject.org/pipermail/driverdev-devel/attachments/20120907/dc920bbd/attachment.asc>


More information about the devel mailing list