From 4d7ceac3fce3258001ac8483d4d8fb280a01a0c7 Mon Sep 17 00:00:00 2001 From: Wen Xie Date: Tue, 15 Oct 2019 12:47:19 +0800 Subject: [PATCH] sensor:sometimes avc error after reboot sync sx933x patch to sx9310 and sx9325: (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: Ibe356ce4670bc33874f351b4371aec5e9d0c80fb Signed-off-by: Wen Xie Reviewed-on: https://gerrit.mot.com/1436726 SLTApproved: Slta Waiver SME-Granted: SME Approvals Granted Tested-by: Jira Key Submit-Approved: Lu Lu Reviewed-by: Jiacheng Ou Reviewed-by: Xiangpo Zhao --- drivers/misc/sx9310/Kbuild | 10 ++++++++++ drivers/misc/sx9310/sx9310_triple.c | 4 ++++ drivers/misc/sx9325/Kbuild | 10 ++++++++++ drivers/misc/sx9325/sx9325_sar.c | 5 ++++- 4 files changed, 28 insertions(+), 1 deletion(-) diff --git a/drivers/misc/sx9310/Kbuild b/drivers/misc/sx9310/Kbuild index bcf0b63aed30..7c4b9351c0b6 100644 --- a/drivers/misc/sx9310/Kbuild +++ b/drivers/misc/sx9310/Kbuild @@ -1,7 +1,17 @@ +KERNEL_DIR_PATH = $(shell find $(TOP)/kernel/ -name "msm-*" | head -1 | grep -i "kernel/msm-*") + +KERNEL_VERSION_NAME = $(shell basename $(KERNEL_DIR_PATH)) + # add -Wall to try to catch everything we can. 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 sx931x_triple-y := sx9310_triple.o diff --git a/drivers/misc/sx9310/sx9310_triple.c b/drivers/misc/sx9310/sx9310_triple.c index 75d17def5b59..b473a861808d 100644 --- a/drivers/misc/sx9310/sx9310_triple.c +++ b/drivers/misc/sx9310/sx9310_triple.c @@ -33,6 +33,7 @@ /* main struct, interrupt,init,pointers */ #include +#include "base.h" #define IDLE 0 #define ACTIVE 1 @@ -1296,6 +1297,9 @@ static int sx9310_probe(struct i2c_client *client, LOG_ERR("Create reg 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; diff --git a/drivers/misc/sx9325/Kbuild b/drivers/misc/sx9325/Kbuild index aa0c84a561f9..0d6870611333 100644 --- a/drivers/misc/sx9325/Kbuild +++ b/drivers/misc/sx9325/Kbuild @@ -1,7 +1,17 @@ +KERNEL_DIR_PATH = $(shell find $(TOP)/kernel/ -name "msm-*" | head -1 | grep -i "kernel/msm-*") + +KERNEL_VERSION_NAME = $(shell basename $(KERNEL_DIR_PATH)) + # add -Wall to try to catch everything we can. 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 sx932x_sar-y := sx9325_sar.o diff --git a/drivers/misc/sx9325/sx9325_sar.c b/drivers/misc/sx9325/sx9325_sar.c index 3113914da0b1..cd51d2ba21c9 100644 --- a/drivers/misc/sx9325/sx9325_sar.c +++ b/drivers/misc/sx9325/sx9325_sar.c @@ -34,7 +34,7 @@ /* main struct, interrupt,init,pointers */ #include - +#include "base.h" #define IDLE 0 #define ACTIVE 1 @@ -1193,6 +1193,9 @@ static int sx9325_probe(struct i2c_client *client, LOG_ERR("Create fsys class 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;