diff options
| -rw-r--r-- | drivers/hid/hid-core.c | 6 | 
1 files changed, 5 insertions, 1 deletions
| diff --git a/drivers/hid/hid-core.c b/drivers/hid/hid-core.c index ef1f79951d9b..f7d4efcae603 100644 --- a/drivers/hid/hid-core.c +++ b/drivers/hid/hid-core.c @@ -66,8 +66,12 @@ static s32 snto32(__u32 value, unsigned int n)  static u32 s32ton(__s32 value, unsigned int n)  { -	s32 a = value >> (n - 1); +	s32 a; +	if (!value || !n) +		return 0; + +	a = value >> (n - 1);  	if (a && a != -1)  		return value < 0 ? 1 << (n - 1) : (1 << (n - 1)) - 1;  	return value & ((1 << n) - 1); | 
