lkml.org 
[lkml]   [2010]   [May]   [8]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    Date
    From
    SubjectRe: [PATCH -tip 1/2] [RESEND] kprobes: Move enable/disable_kprobe() out from debugfs code
    Masami Hiramatsu wrote:
    > Move enable/disable_kprobe() API out from debugfs related code,
    > because these interfaces are not related to debugfs interface.

    Hi Ingo,

    Could you also merge this fix too?
    This fixes a compiler warning when CONFIG_KPROBES && !CONFIG_DEBUG_FS.

    Thank you,

    >
    > Signed-off-by: Masami Hiramatsu <mhiramat@redhat.com>
    > Acked-by: Ananth N Mavinakayanahalli <ananth@in.ibm.com>
    > Acked-by: Tony Luck <tony.luck@intel.com>
    > Cc: Ingo Molnar <mingo@elte.hu>
    > ---
    >
    > kernel/kprobes.c | 132 +++++++++++++++++++++++++++---------------------------
    > 1 files changed, 66 insertions(+), 66 deletions(-)
    >
    > diff --git a/kernel/kprobes.c b/kernel/kprobes.c
    > index 0ed46f3..282035f 100644
    > --- a/kernel/kprobes.c
    > +++ b/kernel/kprobes.c
    > @@ -1588,6 +1588,72 @@ static void __kprobes kill_kprobe(struct kprobe *p)
    > arch_remove_kprobe(p);
    > }
    >
    > +/* Disable one kprobe */
    > +int __kprobes disable_kprobe(struct kprobe *kp)
    > +{
    > + int ret = 0;
    > + struct kprobe *p;
    > +
    > + mutex_lock(&kprobe_mutex);
    > +
    > + /* Check whether specified probe is valid. */
    > + p = __get_valid_kprobe(kp);
    > + if (unlikely(p == NULL)) {
    > + ret = -EINVAL;
    > + goto out;
    > + }
    > +
    > + /* If the probe is already disabled (or gone), just return */
    > + if (kprobe_disabled(kp))
    > + goto out;
    > +
    > + kp->flags |= KPROBE_FLAG_DISABLED;
    > + if (p != kp)
    > + /* When kp != p, p is always enabled. */
    > + try_to_disable_aggr_kprobe(p);
    > +
    > + if (!kprobes_all_disarmed && kprobe_disabled(p))
    > + disarm_kprobe(p);
    > +out:
    > + mutex_unlock(&kprobe_mutex);
    > + return ret;
    > +}
    > +EXPORT_SYMBOL_GPL(disable_kprobe);
    > +
    > +/* Enable one kprobe */
    > +int __kprobes enable_kprobe(struct kprobe *kp)
    > +{
    > + int ret = 0;
    > + struct kprobe *p;
    > +
    > + mutex_lock(&kprobe_mutex);
    > +
    > + /* Check whether specified probe is valid. */
    > + p = __get_valid_kprobe(kp);
    > + if (unlikely(p == NULL)) {
    > + ret = -EINVAL;
    > + goto out;
    > + }
    > +
    > + if (kprobe_gone(kp)) {
    > + /* This kprobe has gone, we couldn't enable it. */
    > + ret = -EINVAL;
    > + goto out;
    > + }
    > +
    > + if (p != kp)
    > + kp->flags &= ~KPROBE_FLAG_DISABLED;
    > +
    > + if (!kprobes_all_disarmed && kprobe_disabled(p)) {
    > + p->flags &= ~KPROBE_FLAG_DISABLED;
    > + arm_kprobe(p);
    > + }
    > +out:
    > + mutex_unlock(&kprobe_mutex);
    > + return ret;
    > +}
    > +EXPORT_SYMBOL_GPL(enable_kprobe);
    > +
    > void __kprobes dump_kprobe(struct kprobe *kp)
    > {
    > printk(KERN_WARNING "Dumping kprobe:\n");
    > @@ -1805,72 +1871,6 @@ static const struct file_operations debugfs_kprobes_operations = {
    > .release = seq_release,
    > };
    >
    > -/* Disable one kprobe */
    > -int __kprobes disable_kprobe(struct kprobe *kp)
    > -{
    > - int ret = 0;
    > - struct kprobe *p;
    > -
    > - mutex_lock(&kprobe_mutex);
    > -
    > - /* Check whether specified probe is valid. */
    > - p = __get_valid_kprobe(kp);
    > - if (unlikely(p == NULL)) {
    > - ret = -EINVAL;
    > - goto out;
    > - }
    > -
    > - /* If the probe is already disabled (or gone), just return */
    > - if (kprobe_disabled(kp))
    > - goto out;
    > -
    > - kp->flags |= KPROBE_FLAG_DISABLED;
    > - if (p != kp)
    > - /* When kp != p, p is always enabled. */
    > - try_to_disable_aggr_kprobe(p);
    > -
    > - if (!kprobes_all_disarmed && kprobe_disabled(p))
    > - disarm_kprobe(p);
    > -out:
    > - mutex_unlock(&kprobe_mutex);
    > - return ret;
    > -}
    > -EXPORT_SYMBOL_GPL(disable_kprobe);
    > -
    > -/* Enable one kprobe */
    > -int __kprobes enable_kprobe(struct kprobe *kp)
    > -{
    > - int ret = 0;
    > - struct kprobe *p;
    > -
    > - mutex_lock(&kprobe_mutex);
    > -
    > - /* Check whether specified probe is valid. */
    > - p = __get_valid_kprobe(kp);
    > - if (unlikely(p == NULL)) {
    > - ret = -EINVAL;
    > - goto out;
    > - }
    > -
    > - if (kprobe_gone(kp)) {
    > - /* This kprobe has gone, we couldn't enable it. */
    > - ret = -EINVAL;
    > - goto out;
    > - }
    > -
    > - if (p != kp)
    > - kp->flags &= ~KPROBE_FLAG_DISABLED;
    > -
    > - if (!kprobes_all_disarmed && kprobe_disabled(p)) {
    > - p->flags &= ~KPROBE_FLAG_DISABLED;
    > - arm_kprobe(p);
    > - }
    > -out:
    > - mutex_unlock(&kprobe_mutex);
    > - return ret;
    > -}
    > -EXPORT_SYMBOL_GPL(enable_kprobe);
    > -
    > static void __kprobes arm_all_kprobes(void)
    > {
    > struct hlist_head *head;
    >
    >

    --
    Masami Hiramatsu
    e-mail: mhiramat@redhat.com



    \
     
     \ /
      Last update: 2010-05-08 17:39    [W:0.035 / U:30.240 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site