From 4b22a080afff719891cfdc3554c3391b06939cbd Mon Sep 17 00:00:00 2001 From: chenlj2 Date: Tue, 15 Oct 2019 21:18:28 +0800 Subject: [PATCH] DLKM/sarsensor:sometimes avc error after reboot sync sx933x patch to abov sar sensor code: (CR) sensor:sometimes avc error after reboot Issue: Sometimes avc error after reboot: avc: denied { write } for comm="capsense_reset" name="reset" dev="sysfs" ino=54780 scontext=u:r:capsense_reset:s0 tcontext =u:object_r:sysfs:s0 tclass=file permissive=0 pkg="" Rootcause: class_register logic: -create sysfs dir 'capsense' -send uevent 'add' to hal -create sysfs file 'reset' Most of times sysfs file haven't create while ueventd monitor 'ADD' to fresh sys/class/capsense label as 'sysfs_capsense', file under capsense will inherit /sys label ,which is 'sysfs'. Fix: Send uevent 'CHANGE' again to HAL, so that relabeling '/sys/class/capsense/*'. Change-Id: Iea5270830160e1edef2429ae11829eccbb388838 Signed-off-by: chenlj2 Reviewed-on: https://gerrit.mot.com/1436924 SLTApproved: Slta Waiver SME-Granted: SME Approvals Granted Tested-by: Jira Key Reviewed-by: Jiacheng Ou Reviewed-by: Jianqiu Huang Reviewed-by: Tao Sun Reviewed-by: Wen Xie Submit-Approved: Jira Key --- drivers/misc/abov/Kbuild | 8 ++++++++ drivers/misc/abov/abov_sar_mmi.c | 4 ++++ drivers/misc/abov_a96t/Kbuild | 9 +++++++++ drivers/misc/abov_a96t/abov_sar_a96t.c | 5 +++++ 4 files changed, 26 insertions(+) diff --git a/drivers/misc/abov/Kbuild b/drivers/misc/abov/Kbuild index 647620de18f5..84959597c531 100644 --- a/drivers/misc/abov/Kbuild +++ b/drivers/misc/abov/Kbuild @@ -1,7 +1,15 @@ # add -Wall to try to catch everything we can. +KERNEL_DIR_PATH = $(shell find $(TOP)/kernel/ -name "msm-*" | head -1 | grep -i "kernel/msm-*") + +KERNEL_VERSION_NAME = $(shell basename $(KERNEL_DIR_PATH)) EXTRA_CFLAGS += -Wall EXTRA_CFLAGS += -I$(TOP)/motorola/kernel/modules/include +ifneq (,$(KERNEL_DIR_PATH)) + EXTRA_CFLAGS += -I$(TOP)/kernel/$(KERNEL_VERSION_NAME)/drivers/base +else + EXTRA_CFLAGS += -I$(TOP)/kernel/drivers/base +endif KBUILD_EXTRA_SYMBOLS += $(CURDIR)/$(KBUILD_EXTMOD)/../../sensors/Module.symvers abov_sar-y := abov_sar_mmi.o diff --git a/drivers/misc/abov/abov_sar_mmi.c b/drivers/misc/abov/abov_sar_mmi.c index bc4a3a85041d..49c46359297a 100644 --- a/drivers/misc/abov/abov_sar_mmi.c +++ b/drivers/misc/abov/abov_sar_mmi.c @@ -40,6 +40,7 @@ #include #include #include +#include "base.h" #define SLEEP(x) mdelay(x) #define C_I2C_FIFO_SIZE 8 @@ -1707,6 +1708,9 @@ static int abov_probe(struct i2c_client *client, const struct i2c_device_id *id) goto err_class_register; } + /*restore sys/class/capsense label*/ + kobject_uevent(&capsense_class.p->subsys.kobj, KOBJ_CHANGE); + #ifdef USE_SENSORS_CLASS sensors_capsensor_top_cdev.sensors_enable = capsensor_set_enable; sensors_capsensor_top_cdev.sensors_poll_delay = NULL; diff --git a/drivers/misc/abov_a96t/Kbuild b/drivers/misc/abov_a96t/Kbuild index 01299503f0c2..c01e49fd6065 100644 --- a/drivers/misc/abov_a96t/Kbuild +++ b/drivers/misc/abov_a96t/Kbuild @@ -1,5 +1,14 @@ # add -Wall to try to catch everything we can. +KERNEL_DIR_PATH = $(shell find $(TOP)/kernel/ -name "msm-*" | head -1 | grep -i "kernel/msm-*") + +KERNEL_VERSION_NAME = $(shell basename $(KERNEL_DIR_PATH)) EXTRA_CFLAGS += -Wall EXTRA_CFLAGS += -I$(TOP)/motorola/kernel/modules/include +ifneq (,$(KERNEL_DIR_PATH)) + EXTRA_CFLAGS += -I$(TOP)/kernel/$(KERNEL_VERSION_NAME)/drivers/base +else + EXTRA_CFLAGS += -I$(TOP)/kernel/drivers/base +endif +KBUILD_EXTRA_SYMBOLS += $(CURDIR)/$(KBUILD_EXTMOD)/../../sensors/Module.symvers obj-m = abov_sar_a96t.o diff --git a/drivers/misc/abov_a96t/abov_sar_a96t.c b/drivers/misc/abov_a96t/abov_sar_a96t.c index bb8fd23ef589..879523e8c369 100644 --- a/drivers/misc/abov_a96t/abov_sar_a96t.c +++ b/drivers/misc/abov_a96t/abov_sar_a96t.c @@ -36,6 +36,8 @@ #include #include #include +#include "base.h" + #define SLEEP(x) mdelay(x) #define C_I2C_FIFO_SIZE 8 @@ -1572,6 +1574,9 @@ static int abov_probe(struct i2c_client *client, const struct i2c_device_id *id) LOG_DBG("Create update_fw file failed (%d)\n", ret); return ret; } + /*restore sys/class/capsense label*/ + kobject_uevent(&capsense_class.p->subsys.kobj, KOBJ_CHANGE); + #ifdef USE_SENSORS_CLASS sensors_capsensor_top_cdev.sensors_enable = capsensor_set_enable; sensors_capsensor_top_cdev.sensors_poll_delay = NULL;