path: root/drivers/gnss/serial.c
diff options
authorJohan Hovold <johan@kernel.org>2018-11-14 09:33:57 +0100
committerJohan Hovold <johan@kernel.org>2018-11-14 20:37:28 +0100
commit56a6c7268312cba9436b84cac01b3e502c5c511d (patch)
treec537768c3fd761176ba7899608b5a4148d6a87fd /drivers/gnss/serial.c
parentccda4af0f4b92f7b4c308d3acc262f4a7e3affad (diff)
gnss: serial: 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: 37768b054f20 ("gnss: add generic serial driver") Cc: stable <stable@vger.kernel.org> # 4.19 Signed-off-by: Johan Hovold <johan@kernel.org>
Diffstat (limited to 'drivers/gnss/serial.c')
1 files changed, 2 insertions, 1 deletions
diff --git a/drivers/gnss/serial.c b/drivers/gnss/serial.c
index b01ba4438501..31e891f00175 100644
--- a/drivers/gnss/serial.c
+++ b/drivers/gnss/serial.c
@@ -13,6 +13,7 @@
#include <linux/of.h>
#include <linux/pm.h>
#include <linux/pm_runtime.h>
+#include <linux/sched.h>
#include <linux/serdev.h>
#include <linux/slab.h>
@@ -63,7 +64,7 @@ static int gnss_serial_write_raw(struct gnss_device *gdev,
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;