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 <xiewen3@motorola.com>
Reviewed-on: https://gerrit.mot.com/1436726
SLTApproved: Slta Waiver
SME-Granted: SME Approvals Granted
Tested-by: Jira Key
Submit-Approved: Lu Lu <lulu2@lenovo.com>
Reviewed-by: Jiacheng Ou <oujc1@motorola.com>
Reviewed-by: Xiangpo Zhao <zhaoxp3@motorola.com>
This commit is contained in:
Wen Xie 2019-10-15 12:47:19 +08:00
commit 4d7ceac3fc
4 changed files with 28 additions and 1 deletions

View file

@ -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

View file

@ -33,6 +33,7 @@
/* main struct, interrupt,init,pointers */
#include <linux/input/sx9310_triple.h>
#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;

View file

@ -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

View file

@ -34,7 +34,7 @@
/* main struct, interrupt,init,pointers */
#include <linux/input/sx9325_sar.h>
#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;