mirror of
				https://kernel.googlesource.com/pub/scm/linux/kernel/git/stable/linux-stable.git
				synced 2025-10-30 22:47:06 +10:00 
			
		
		
		
	mfd: 88pm80x: Double shifting bug in suspend/resume
set_bit() and clear_bit() take the bit number so this code is really
doing "1 << (1 << irq)" which is a double shift bug.  It's done
consistently so it won't cause a problem unless "irq" is more than 4.
Fixes: 70c6cce040 ('mfd: Support 88pm80x in 80x driver')
Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com>
Signed-off-by: Lee Jones <lee.jones@linaro.org>
			
			
This commit is contained in:
		
							parent
							
								
									7f70495a51
								
							
						
					
					
						commit
						9a6dc64451
					
				| @ -350,7 +350,7 @@ static inline int pm80x_dev_suspend(struct device *dev) | ||||
| 	int irq = platform_get_irq(pdev, 0); | ||||
| 
 | ||||
| 	if (device_may_wakeup(dev)) | ||||
| 		set_bit((1 << irq), &chip->wu_flag); | ||||
| 		set_bit(irq, &chip->wu_flag); | ||||
| 
 | ||||
| 	return 0; | ||||
| } | ||||
| @ -362,7 +362,7 @@ static inline int pm80x_dev_resume(struct device *dev) | ||||
| 	int irq = platform_get_irq(pdev, 0); | ||||
| 
 | ||||
| 	if (device_may_wakeup(dev)) | ||||
| 		clear_bit((1 << irq), &chip->wu_flag); | ||||
| 		clear_bit(irq, &chip->wu_flag); | ||||
| 
 | ||||
| 	return 0; | ||||
| } | ||||
|  | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user