forked from rubenslte/android_kernel_samsung_msm8226
input: synaptics: defer sysfs creation during init
sysfs entries are created which reference fwu->fwu_work. defer the creation of these sysfs entries until the end of the init function, after fwu->fwu_work has been initialized. Change-Id: Ib7d5304ec2990454486e2b1d28b640a174c83d12 Bug: 31252388 Signed-off-by: Andrew Chant <achant@google.com> CVE-2016-6745 Signed-off-by: Kevin F. Haggerty <haggertk@lineageos.org>
This commit is contained in:
committed by
Francescodario Cuzzocrea
parent
1efcd31e9d
commit
9ff1631fd3
@@ -2263,7 +2263,23 @@ static int synaptics_rmi4_fwu_init(struct synaptics_rmi4_data *rmi4_data)
|
||||
fwu->initialized = true;
|
||||
fwu->polling_mode = false;
|
||||
|
||||
retval = sysfs_create_bin_file(&rmi4_data->i2c_client->dev.kobj,
|
||||
fwu->ts_info = kzalloc(RMI4_INFO_MAX_LEN, GFP_KERNEL);
|
||||
if (!fwu->ts_info) {
|
||||
dev_err(&rmi4_data->i2c_client->dev, "Not enough memory\n");
|
||||
goto exit_free_ts_info;
|
||||
}
|
||||
|
||||
synaptics_rmi4_update_debug_info();
|
||||
|
||||
#ifdef INSIDE_FIRMWARE_UPDATE
|
||||
fwu->fwu_workqueue = create_singlethread_workqueue("fwu_workqueue");
|
||||
INIT_DELAYED_WORK(&fwu->fwu_work, synaptics_rmi4_fwu_work);
|
||||
queue_delayed_work(fwu->fwu_workqueue,
|
||||
&fwu->fwu_work,
|
||||
msecs_to_jiffies(1000));
|
||||
#endif
|
||||
|
||||
retval = sysfs_create_bin_file(&rmi4_data->i2c_client->dev.kobj,
|
||||
&dev_attr_data);
|
||||
if (retval < 0) {
|
||||
dev_err(&rmi4_data->i2c_client->dev,
|
||||
@@ -2295,22 +2311,6 @@ static int synaptics_rmi4_fwu_init(struct synaptics_rmi4_data *rmi4_data)
|
||||
goto exit_remove_attrs;
|
||||
}
|
||||
|
||||
fwu->ts_info = kzalloc(RMI4_INFO_MAX_LEN, GFP_KERNEL);
|
||||
if (!fwu->ts_info) {
|
||||
dev_err(&rmi4_data->i2c_client->dev, "Not enough memory\n");
|
||||
goto exit_free_ts_info;
|
||||
}
|
||||
|
||||
synaptics_rmi4_update_debug_info();
|
||||
|
||||
#ifdef INSIDE_FIRMWARE_UPDATE
|
||||
fwu->fwu_workqueue = create_singlethread_workqueue("fwu_workqueue");
|
||||
INIT_DELAYED_WORK(&fwu->fwu_work, synaptics_rmi4_fwu_work);
|
||||
queue_delayed_work(fwu->fwu_workqueue,
|
||||
&fwu->fwu_work,
|
||||
msecs_to_jiffies(1000));
|
||||
#endif
|
||||
|
||||
return 0;
|
||||
exit_free_ts_info:
|
||||
debugfs_remove(temp);
|
||||
|
||||
Reference in New Issue
Block a user