From 01ea848b31d0eb07f799ec874bf20e016f17c5e9 Mon Sep 17 00:00:00 2001 From: Jiacheng Ou Date: Thu, 10 Oct 2019 13:35:51 +0800 Subject: [PATCH] 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: If6ddf3205a9f299e0617814d341827357ecb126f Signed-off-by: Jiacheng Ou Reviewed-on: https://gerrit.mot.com/1434771 SME-Granted: SME Approvals Granted SLTApproved: Slta Waiver Tested-by: Jira Key Reviewed-by: Huosheng Liao Submit-Approved: Jira Key Conflicts: drivers/misc/sx933x/Kbuild Change-Id: I95404ee83cee74369af2c5b1a8e8152d3699300d Reviewed-on: https://gerrit.mot.com/1435914 SLTApproved: Slta Waiver SME-Granted: SME Approvals Granted Tested-by: Jira Key Reviewed-by: Jiacheng Ou Reviewed-by: Huosheng Liao Submit-Approved: Jira Key --- drivers/misc/sx933x/Kbuild | 5 +++++ drivers/misc/sx933x/sx933x_sar.c | 4 ++++ 2 files changed, 9 insertions(+) diff --git a/drivers/misc/sx933x/Kbuild b/drivers/misc/sx933x/Kbuild index b50d44bc4a23..c32c08d718d2 100644 --- a/drivers/misc/sx933x/Kbuild +++ b/drivers/misc/sx933x/Kbuild @@ -1,3 +1,7 @@ +KERNEL_DIR_PATH = $(shell find $(TOP)/kernel/ -name "msm-*" | head -1) + +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 @@ -32,6 +36,7 @@ ifneq (,$(filter burton%,$(TARGET_PRODUCT))) EXTRA_CFLAGS += -DCONFIG_CAPSENSE_USB_CAL endif +EXTRA_CFLAGS += -I$(TOP)/kernel/$(KERNEL_VERSION_NAME)/drivers/base KBUILD_EXTRA_SYMBOLS += $(CURDIR)/$(KBUILD_EXTMOD)/../../sensors/Module.symvers sx932x_sar-y := sx933x_sar.o diff --git a/drivers/misc/sx933x/sx933x_sar.c b/drivers/misc/sx933x/sx933x_sar.c index 3bfcd97e15d6..19fefa0bdc11 100644 --- a/drivers/misc/sx933x/sx933x_sar.c +++ b/drivers/misc/sx933x/sx933x_sar.c @@ -34,6 +34,7 @@ #include #include #include "../../../include/linux/input/sx933x.h" /* main struct, interrupt,init,pointers */ +#include "base.h" #define SX933x_DEBUG 0 #define LOG_TAG "[sar SX933x]: " @@ -1001,6 +1002,9 @@ static int sx933x_probe(struct i2c_client *client, const struct i2c_device_id *i return err; } + /*restore sys/class/capsense label*/ + kobject_uevent(&capsense_class.p->subsys.kobj, KOBJ_CHANGE); + /* Add Pointer to main platform data struct */ pDevice->hw = pplatData;