aboutsummaryrefslogtreecommitdiff
path: root/hid-tmt300rs.c
diff options
context:
space:
mode:
authorKimplul <kimi.h.kuparinen@gmail.com>2022-03-23 22:39:07 +0200
committerKimplul <kimi.h.kuparinen@gmail.com>2022-03-24 11:30:47 +0200
commit3865f5c94cb90d16810b7e751fa79034321ea836 (patch)
tree67f44fc695189ae3ac28a931b6856991535167fe /hid-tmt300rs.c
parentfed8081d45d05ecf2b557515e17a5005b90a7e96 (diff)
downloadhid-tmff2-3865f5c94cb90d16810b7e751fa79034321ea836.tar.gz
hid-tmff2-3865f5c94cb90d16810b7e751fa79034321ea836.zip
fixed possible kernel oops when unplugging device
Diffstat (limited to 'hid-tmt300rs.c')
-rw-r--r--hid-tmt300rs.c12
1 files changed, 7 insertions, 5 deletions
diff --git a/hid-tmt300rs.c b/hid-tmt300rs.c
index 167262c..c2a6c64 100644
--- a/hid-tmt300rs.c
+++ b/hid-tmt300rs.c
@@ -1303,7 +1303,7 @@ int t300rs_open(void *data)
return t300rs->open(t300rs->input_dev);
}
-int t300rs_close(void *data)
+int t300rs_close(void *data, int dev_accessible)
{
struct t300rs_device_entry *t300rs = data;
struct t300rs_packet_close {
@@ -1314,11 +1314,13 @@ int t300rs_close(void *data)
if (!t300rs)
return -ENODEV;
- close_packet = (struct t300rs_packet_close *)t300rs->send_buffer;
- close_packet->header.cmd = 0x01;
+ if (dev_accessible) {
+ close_packet = (struct t300rs_packet_close *)t300rs->send_buffer;
+ close_packet->header.cmd = 0x01;
- if ((ret = t300rs_send_int(t300rs)))
- hid_warn(t300rs->hdev, "failed sending close command\n");
+ if ((ret = t300rs_send_int(t300rs)))
+ hid_warn(t300rs->hdev, "failed sending close command\n");
+ }
t300rs->close(t300rs->input_dev);
return ret;