Compare commits
6 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
a63f456044 | ||
|
|
0222d10465 | ||
|
|
9b1bd6fa6a | ||
|
|
423451dde7 | ||
| 919a2a99ff | |||
| b88cc47233 |
3
.gitmodules
vendored
Normal file
3
.gitmodules
vendored
Normal file
@@ -0,0 +1,3 @@
|
|||||||
|
[submodule "KernelSU-Next"]
|
||||||
|
path = KernelSU-Next
|
||||||
|
url = https://github.com/KernelSU-Next/KernelSU-Next
|
||||||
1
KernelSU-Next
Submodule
1
KernelSU-Next
Submodule
Submodule KernelSU-Next added at 2241696498
@@ -692,7 +692,6 @@
|
|||||||
00 00 0a 0a
|
00 00 0a 0a
|
||||||
00 00 8a 8a];
|
00 00 8a 8a];
|
||||||
qcom,platform-regulator-settings = [1d 1d 1d 1d 1d];
|
qcom,platform-regulator-settings = [1d 1d 1d 1d 1d];
|
||||||
qcom,panel-allow-phy-poweroff;
|
|
||||||
qcom,phy-supply-entries {
|
qcom,phy-supply-entries {
|
||||||
#address-cells = <1>;
|
#address-cells = <1>;
|
||||||
#size-cells = <0>;
|
#size-cells = <0>;
|
||||||
|
|||||||
@@ -234,4 +234,5 @@ source "drivers/sensors/Kconfig"
|
|||||||
source "drivers/gpu/msm/Kconfig"
|
source "drivers/gpu/msm/Kconfig"
|
||||||
|
|
||||||
source "drivers/energy_model/Kconfig"
|
source "drivers/energy_model/Kconfig"
|
||||||
|
source "drivers/kernelsu/Kconfig"
|
||||||
endmenu
|
endmenu
|
||||||
|
|||||||
@@ -193,3 +193,5 @@ obj-$(CONFIG_UNISYS_VISORBUS) += visorbus/
|
|||||||
obj-$(CONFIG_SIOX) += siox/
|
obj-$(CONFIG_SIOX) += siox/
|
||||||
obj-$(CONFIG_GNSS) += gnss/
|
obj-$(CONFIG_GNSS) += gnss/
|
||||||
obj-$(CONFIG_SENSORS_SSC) += sensors/
|
obj-$(CONFIG_SENSORS_SSC) += sensors/
|
||||||
|
|
||||||
|
obj-$(CONFIG_KSU) += kernelsu/
|
||||||
|
|||||||
1
drivers/kernelsu
Symbolic link
1
drivers/kernelsu
Symbolic link
@@ -0,0 +1 @@
|
|||||||
|
../KernelSU-Next/kernel
|
||||||
@@ -77,6 +77,7 @@ extern int finish_automount(struct vfsmount *, struct path *);
|
|||||||
extern int sb_prepare_remount_readonly(struct super_block *);
|
extern int sb_prepare_remount_readonly(struct super_block *);
|
||||||
|
|
||||||
extern void __init mnt_init(void);
|
extern void __init mnt_init(void);
|
||||||
|
int path_umount(struct path *path, int flags);
|
||||||
|
|
||||||
extern int __mnt_want_write_file(struct file *);
|
extern int __mnt_want_write_file(struct file *);
|
||||||
extern void __mnt_drop_write_file(struct file *);
|
extern void __mnt_drop_write_file(struct file *);
|
||||||
|
|||||||
@@ -1645,6 +1645,40 @@ static inline bool may_mandlock(void)
|
|||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
static int can_umount(const struct path *path, int flags)
|
||||||
|
{
|
||||||
|
struct mount *mnt = real_mount(path->mnt);
|
||||||
|
|
||||||
|
if (flags & ~(MNT_FORCE | MNT_DETACH | MNT_EXPIRE | UMOUNT_NOFOLLOW))
|
||||||
|
return -EINVAL;
|
||||||
|
if (!may_mount())
|
||||||
|
return -EPERM;
|
||||||
|
if (path->dentry != path->mnt->mnt_root)
|
||||||
|
return -EINVAL;
|
||||||
|
if (!check_mnt(mnt))
|
||||||
|
return -EINVAL;
|
||||||
|
if (mnt->mnt.mnt_flags & MNT_LOCKED) /* Check optimistically */
|
||||||
|
return -EINVAL;
|
||||||
|
if (flags & MNT_FORCE && !capable(CAP_SYS_ADMIN))
|
||||||
|
return -EPERM;
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
int path_umount(struct path *path, int flags)
|
||||||
|
{
|
||||||
|
struct mount *mnt = real_mount(path->mnt);
|
||||||
|
int ret;
|
||||||
|
|
||||||
|
ret = can_umount(path, flags);
|
||||||
|
if (!ret)
|
||||||
|
ret = do_umount(mnt, flags);
|
||||||
|
|
||||||
|
/* we mustn't call path_put() as that would clear mnt_expiry_mark */
|
||||||
|
dput(path->dentry);
|
||||||
|
mntput_no_expire(mnt);
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Now umount can handle mount points as well as block devices.
|
* Now umount can handle mount points as well as block devices.
|
||||||
* This is important for filesystems which use unnamed block devices.
|
* This is important for filesystems which use unnamed block devices.
|
||||||
|
|||||||
@@ -325,12 +325,8 @@ static int dsi_phy_settings_init(struct platform_device *pdev,
|
|||||||
/* Actual timing values are dependent on panel */
|
/* Actual timing values are dependent on panel */
|
||||||
timing->count_per_lane = phy->ver_info->timing_cfg_count;
|
timing->count_per_lane = phy->ver_info->timing_cfg_count;
|
||||||
|
|
||||||
#ifndef CONFIG_MACH_XIAOMI_UMI
|
|
||||||
phy->allow_phy_power_off = of_property_read_bool(pdev->dev.of_node,
|
phy->allow_phy_power_off = of_property_read_bool(pdev->dev.of_node,
|
||||||
"qcom,panel-allow-phy-poweroff");
|
"qcom,panel-allow-phy-poweroff");
|
||||||
#else
|
|
||||||
phy->allow_phy_power_off = false;
|
|
||||||
#endif
|
|
||||||
|
|
||||||
of_property_read_u32(pdev->dev.of_node,
|
of_property_read_u32(pdev->dev.of_node,
|
||||||
"qcom,dsi-phy-regulator-min-datarate-bps",
|
"qcom,dsi-phy-regulator-min-datarate-bps",
|
||||||
|
|||||||
Reference in New Issue
Block a user