diff options
author | Johan Hovold <johan@kernel.org> | 2018-11-14 09:37:54 +0100 |
---|---|---|
committer | Johan Hovold <johan@kernel.org> | 2018-11-14 20:37:41 +0100 |
commit | 1decef370456870bf448a565be95db636428e106 (patch) | |
tree | 5271c5cc91d3c1632b3690c32c38c6efd3fa08e9 | |
parent | 56a6c7268312cba9436b84cac01b3e502c5c511d (diff) | |
download | lwn-1decef370456870bf448a565be95db636428e106.tar.gz lwn-1decef370456870bf448a565be95db636428e106.zip |
gnss: sirf: fix synchronous write timeout
Passing a timeout of zero to the synchronous serdev_device_write()
helper does currently not imply to wait forever (unlike passing zero to
serdev_device_wait_until_sent()). Instead, if there's insufficient
room in the write buffer, we'd end up with an incomplete write.
Fixes: d2efbbd18b1e ("gnss: add driver for sirfstar-based receivers")
Cc: stable <stable@vger.kernel.org> # 4.19
Signed-off-by: Johan Hovold <johan@kernel.org>
-rw-r--r-- | drivers/gnss/sirf.c | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/drivers/gnss/sirf.c b/drivers/gnss/sirf.c index 79cb98950013..71d014edd167 100644 --- a/drivers/gnss/sirf.c +++ b/drivers/gnss/sirf.c @@ -16,6 +16,7 @@ #include <linux/pm.h> #include <linux/pm_runtime.h> #include <linux/regulator/consumer.h> +#include <linux/sched.h> #include <linux/serdev.h> #include <linux/slab.h> #include <linux/wait.h> @@ -83,7 +84,7 @@ static int sirf_write_raw(struct gnss_device *gdev, const unsigned char *buf, int ret; /* write is only buffered synchronously */ - ret = serdev_device_write(serdev, buf, count, 0); + ret = serdev_device_write(serdev, buf, count, MAX_SCHEDULE_TIMEOUT); if (ret < 0) return ret; |