aboutsummaryrefslogtreecommitdiffstats
path: root/kernel/livepatch/core.c
diff options
context:
space:
mode:
authorMiroslav Benes <mbenes@suse.cz>2019-01-15 11:45:07 -0500
committerJiri Kosina <jkosina@suse.cz>2019-01-16 16:09:33 -0500
commit0b3d52790e1cfd6b80b826a245d24859e89632f7 (patch)
tree8a804f975eeacddea0add44d9b2ad912a9fbc636 /kernel/livepatch/core.c
parentcba82dea30613346cf9a0532a41fc118bc3263af (diff)
livepatch: Remove signal sysfs attribute
The fake signal is send automatically now. We can rely on it completely and remove the sysfs attribute. Signed-off-by: Miroslav Benes <mbenes@suse.cz> Signed-off-by: Jiri Kosina <jkosina@suse.cz>
Diffstat (limited to 'kernel/livepatch/core.c')
-rw-r--r--kernel/livepatch/core.c32
1 files changed, 0 insertions, 32 deletions
diff --git a/kernel/livepatch/core.c b/kernel/livepatch/core.c
index adca5cf07f7e..fe1993399823 100644
--- a/kernel/livepatch/core.c
+++ b/kernel/livepatch/core.c
@@ -313,7 +313,6 @@ static int klp_write_object_relocations(struct module *pmod,
313 * /sys/kernel/livepatch/<patch> 313 * /sys/kernel/livepatch/<patch>
314 * /sys/kernel/livepatch/<patch>/enabled 314 * /sys/kernel/livepatch/<patch>/enabled
315 * /sys/kernel/livepatch/<patch>/transition 315 * /sys/kernel/livepatch/<patch>/transition
316 * /sys/kernel/livepatch/<patch>/signal
317 * /sys/kernel/livepatch/<patch>/force 316 * /sys/kernel/livepatch/<patch>/force
318 * /sys/kernel/livepatch/<patch>/<object> 317 * /sys/kernel/livepatch/<patch>/<object>
319 * /sys/kernel/livepatch/<patch>/<object>/<function,sympos> 318 * /sys/kernel/livepatch/<patch>/<object>/<function,sympos>
@@ -382,35 +381,6 @@ static ssize_t transition_show(struct kobject *kobj,
382 patch == klp_transition_patch); 381 patch == klp_transition_patch);
383} 382}
384 383
385static ssize_t signal_store(struct kobject *kobj, struct kobj_attribute *attr,
386 const char *buf, size_t count)
387{
388 struct klp_patch *patch;
389 int ret;
390 bool val;
391
392 ret = kstrtobool(buf, &val);
393 if (ret)
394 return ret;
395
396 if (!val)
397 return count;
398
399 mutex_lock(&klp_mutex);
400
401 patch = container_of(kobj, struct klp_patch, kobj);
402 if (patch != klp_transition_patch) {
403 mutex_unlock(&klp_mutex);
404 return -EINVAL;
405 }
406
407 klp_send_signals();
408
409 mutex_unlock(&klp_mutex);
410
411 return count;
412}
413
414static ssize_t force_store(struct kobject *kobj, struct kobj_attribute *attr, 384static ssize_t force_store(struct kobject *kobj, struct kobj_attribute *attr,
415 const char *buf, size_t count) 385 const char *buf, size_t count)
416{ 386{
@@ -442,12 +412,10 @@ static ssize_t force_store(struct kobject *kobj, struct kobj_attribute *attr,
442 412
443static struct kobj_attribute enabled_kobj_attr = __ATTR_RW(enabled); 413static struct kobj_attribute enabled_kobj_attr = __ATTR_RW(enabled);
444static struct kobj_attribute transition_kobj_attr = __ATTR_RO(transition); 414static struct kobj_attribute transition_kobj_attr = __ATTR_RO(transition);
445static struct kobj_attribute signal_kobj_attr = __ATTR_WO(signal);
446static struct kobj_attribute force_kobj_attr = __ATTR_WO(force); 415static struct kobj_attribute force_kobj_attr = __ATTR_WO(force);
447static struct attribute *klp_patch_attrs[] = { 416static struct attribute *klp_patch_attrs[] = {
448 &enabled_kobj_attr.attr, 417 &enabled_kobj_attr.attr,
449 &transition_kobj_attr.attr, 418 &transition_kobj_attr.attr,
450 &signal_kobj_attr.attr,
451 &force_kobj_attr.attr, 419 &force_kobj_attr.attr,
452 NULL 420 NULL
453}; 421};