diff options
author | Miroslav Benes <mbenes@suse.cz> | 2019-01-15 11:45:07 -0500 |
---|---|---|
committer | Jiri Kosina <jkosina@suse.cz> | 2019-01-16 16:09:33 -0500 |
commit | 0b3d52790e1cfd6b80b826a245d24859e89632f7 (patch) | |
tree | 8a804f975eeacddea0add44d9b2ad912a9fbc636 /kernel/livepatch/core.c | |
parent | cba82dea30613346cf9a0532a41fc118bc3263af (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.c | 32 |
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 | ||
385 | static 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 | |||
414 | static ssize_t force_store(struct kobject *kobj, struct kobj_attribute *attr, | 384 | static 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 | ||
443 | static struct kobj_attribute enabled_kobj_attr = __ATTR_RW(enabled); | 413 | static struct kobj_attribute enabled_kobj_attr = __ATTR_RW(enabled); |
444 | static struct kobj_attribute transition_kobj_attr = __ATTR_RO(transition); | 414 | static struct kobj_attribute transition_kobj_attr = __ATTR_RO(transition); |
445 | static struct kobj_attribute signal_kobj_attr = __ATTR_WO(signal); | ||
446 | static struct kobj_attribute force_kobj_attr = __ATTR_WO(force); | 415 | static struct kobj_attribute force_kobj_attr = __ATTR_WO(force); |
447 | static struct attribute *klp_patch_attrs[] = { | 416 | static 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 | }; |