]> git.ipfire.org Git - thirdparty/kernel/stable.git/commit
iio:core: fix IIO_VAL_FRACTIONAL sign handling
authorGregor Boirie <gregor.boirie@parrot.com>
Fri, 2 Sep 2016 18:27:46 +0000 (20:27 +0200)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Sat, 24 Sep 2016 08:09:31 +0000 (10:09 +0200)
commita3a4fce551ff24b53e04825b9cde6de126888768
tree3c52ea19c9f7fe349f835fd5dc8858bee70b7042
parentf0bb3dd494eb7b04296595f5679720668055aebf
iio:core: fix IIO_VAL_FRACTIONAL sign handling

commit 171c0091837c81ed5c949fec6966bb5afff2d1cf upstream.

7985e7c100 ("iio: Introduce a new fractional value type") introduced a
new IIO_VAL_FRACTIONAL value type meant to represent rational type numbers
expressed by a numerator and denominator combination.

Formating of IIO_VAL_FRACTIONAL values relies upon do_div() usage. This
fails handling negative values properly since parameters are reevaluated
as unsigned values.
Fix this by using div_s64_rem() instead. Computed integer part will carry
properly signed value. Formatted fractional part will always be positive.

Fixes: 7985e7c100 ("iio: Introduce a new fractional value type")
Signed-off-by: Gregor Boirie <gregor.boirie@parrot.com>
Reviewed-by: Lars-Peter Clausen <lars@metafoo.de>
Signed-off-by: Jonathan Cameron <jic23@kernel.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/iio/industrialio-core.c