summaryrefslogtreecommitdiff
path: root/drivers/gnss
diff options
context:
space:
mode:
authorJohan Hovold <johan@kernel.org>2018-11-14 11:37:54 +0300
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>2018-11-27 18:13:10 +0300
commit466720dc7769643948dc6c26e8162c82b88775fc (patch)
tree104279657212d2545ea2e6974146d4423f578823 /drivers/gnss
parent9cdfd2233a6b6e98f5221764b634227bdf6c1764 (diff)
downloadlinux-466720dc7769643948dc6c26e8162c82b88775fc.tar.xz
gnss: sirf: fix synchronous write timeout
commit 1decef370456870bf448a565be95db636428e106 upstream. 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> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Diffstat (limited to 'drivers/gnss')
-rw-r--r--drivers/gnss/sirf.c3
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;