Skip to content

Commit

Permalink
staging: iio: frequency: ad9834: Validate frequency parameter value
Browse files Browse the repository at this point in the history
commit b48aa99 upstream.

In ad9834_write_frequency() clk_get_rate() can return 0. In such case
ad9834_calc_freqreg() call will lead to division by zero. Checking
'if (fout > (clk_freq / 2))' doesn't protect in case of 'fout' is 0.
ad9834_write_frequency() is called from ad9834_write(), where fout is
taken from text buffer, which can contain any value.

Modify parameters checking.

Found by Linux Verification Center (linuxtesting.org) with SVACE.

Fixes: 12b9d5b ("Staging: IIO: DDS: AD9833 / AD9834 driver")
Suggested-by: Dan Carpenter <[email protected]>
Signed-off-by: Aleksandr Mishin <[email protected]>
Reviewed-by: Dan Carpenter <[email protected]>
Link: https://patch.msgid.link/[email protected]
Cc: <[email protected]>
Signed-off-by: Jonathan Cameron <[email protected]>
Signed-off-by: Greg Kroah-Hartman <[email protected]>
  • Loading branch information
Aleksandr Mishin authored and gregkh committed Sep 12, 2024
1 parent 5c007a9 commit dc12e49
Showing 1 changed file with 1 addition and 1 deletion.
2 changes: 1 addition & 1 deletion drivers/staging/iio/frequency/ad9834.c
Original file line number Diff line number Diff line change
Expand Up @@ -114,7 +114,7 @@ static int ad9834_write_frequency(struct ad9834_state *st,

clk_freq = clk_get_rate(st->mclk);

if (fout > (clk_freq / 2))
if (!clk_freq || fout > (clk_freq / 2))
return -EINVAL;

regval = ad9834_calc_freqreg(clk_freq, fout);
Expand Down

0 comments on commit dc12e49

Please sign in to comment.