[next] ASoC: cs35l56: Fix unsigned 'rv' comparison with zero in cs35l56_irq()

Message ID 20230323165825.1588629-1-harshit.m.mogalapalli@oracle.com
State New
Headers
Series [next] ASoC: cs35l56: Fix unsigned 'rv' comparison with zero in cs35l56_irq() |

Commit Message

Harshit Mogalapalli March 23, 2023, 4:58 p.m. UTC
  'rv' is of type unsigned int, which can never be less than zero.

	rv = pm_runtime_resume_and_get(cs35l56->dev);
	if (rv < 0) { // can never be true.
		...
	}

As pm_runtime_resume_and_get returns integers, change the type of 'rv'
to int to fix this.

This is found by static analysis with smatch.

Fixes: e49611252900 ("ASoC: cs35l56: Add driver for Cirrus Logic CS35L56")
Signed-off-by: Harshit Mogalapalli <harshit.m.mogalapalli@oracle.com>
---
Only compile tested.
---
 sound/soc/codecs/cs35l56.c | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)
  

Comments

Mark Brown April 4, 2023, 11:45 a.m. UTC | #1
On Thu, Mar 23, 2023 at 09:58:25AM -0700, Harshit Mogalapalli wrote:
> 'rv' is of type unsigned int, which can never be less than zero.

This doesn't apply against current code, please check and resend.
  
Harshit Mogalapalli April 4, 2023, 5:24 p.m. UTC | #2
Hi Mark,

On 04/04/23 5:15 pm, Mark Brown wrote:
> On Thu, Mar 23, 2023 at 09:58:25AM -0700, Harshit Mogalapalli wrote:
>> 'rv' is of type unsigned int, which can never be less than zero.
> 
> This doesn't apply against current code, please check and resend.

The reason for the above is that someone else sent a patch next day 
fixing the same bug which got merged in linux-next.

Ref: 
https://lore.kernel.org/all/20230324022303.121485-1-jiapeng.chong@linux.alibaba.com/

So my patch will not apply and is not needed anymore.

Thanks,
Harshit
  

Patch

diff --git a/sound/soc/codecs/cs35l56.c b/sound/soc/codecs/cs35l56.c
index 90fc79b5666d..b3772005668a 100644
--- a/sound/soc/codecs/cs35l56.c
+++ b/sound/soc/codecs/cs35l56.c
@@ -321,7 +321,8 @@  irqreturn_t cs35l56_irq(int irq, void *data)
 	struct cs35l56_private *cs35l56 = data;
 	unsigned int status1 = 0, status8 = 0, status20 = 0;
 	unsigned int mask1, mask8, mask20;
-	unsigned int rv, val;
+	unsigned int val;
+	int rv;
 	irqreturn_t ret = IRQ_NONE;
 
 	if (!cs35l56->init_done)