From 151ee3ba51c82af528254bb59d33fea7014ddaaa Mon Sep 17 00:00:00 2001 From: Soungkwan Kimn Date: Wed, 2 Jan 2019 16:44:24 +0900 Subject: [PATCH] [RAMEN9610-11423][COMMON][MODAP-16389] gnss_if: fix wake_lock for iod Change-Id: I48e72faa8f3a440364e067f5ce86fea314379c21 Signed-off-by: Soungkwan Kimn --- drivers/misc/gnss_if/gnss_io_device.c | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/drivers/misc/gnss_if/gnss_io_device.c b/drivers/misc/gnss_if/gnss_io_device.c index f48bf1e1941e..d7837b4e18d8 100644 --- a/drivers/misc/gnss_if/gnss_io_device.c +++ b/drivers/misc/gnss_if/gnss_io_device.c @@ -37,8 +37,10 @@ static void exynos_build_header(struct io_device *iod, struct link_device *ld, static inline void iodev_lock_wlock(struct io_device *iod) { - if (iod->waketime > 0 && !wake_lock_active(&iod->wakelock)) + if (iod->waketime > 0 && !wake_lock_active(&iod->wakelock)) { + wake_unlock(&iod->wakelock); wake_lock_timeout(&iod->wakelock, iod->waketime); + } } static inline int queue_skb_to_iod(struct sk_buff *skb, struct io_device *iod) @@ -247,6 +249,12 @@ static int io_dev_recv_skb_single_from_link_dev(struct io_device *iod, { int err; + if (unlikely(atomic_read(&iod->opened) <= 0)) { + gif_err_limited("%s<-%s: ERR! %s is not opened\n", + iod->name, ld->name, iod->name); + return -ENODEV; + } + iodev_lock_wlock(iod); if (skbpriv(skb)->lnk_hdr) -- 2.20.1