Messages in this thread | | | Date | Sun, 29 Jan 2012 09:15:42 +0800 | From | Dave Young <> | Subject | Re: [Patch] lkdtm: avoid calling lkdtm_do_action() with spin lock held |
| |
On 01/28/2012 08:52 PM, Cong Wang wrote:
> lkdtm_do_action() may call sleeping functions like kmalloc(), > so do not call it with spin lock held. > > Cc: Prarit Bhargava <prarit@redhat.com> > Signed-off-by: WANG Cong <xiyou.wangcong@gmail.com>
Reviewed-by: Dave Young <dyoung@redhat.com>
> > --- > diff --git a/drivers/misc/lkdtm.c b/drivers/misc/lkdtm.c > index 150cd70..28adefe 100644 > --- a/drivers/misc/lkdtm.c > +++ b/drivers/misc/lkdtm.c > @@ -354,6 +354,7 @@ static void lkdtm_do_action(enum ctype which) > static void lkdtm_handler(void) > { > unsigned long flags; > + bool do_it = false; > > spin_lock_irqsave(&count_lock, flags); > count--; > @@ -361,10 +362,13 @@ static void lkdtm_handler(void) > cp_name_to_str(cpoint), cp_type_to_str(cptype), count); > > if (count == 0) { > - lkdtm_do_action(cptype); > + do_it = true; > count = cpoint_count; > } > spin_unlock_irqrestore(&count_lock, flags); > + > + if (do_it) > + lkdtm_do_action(cptype); > } > > static int lkdtm_register_cpoint(enum cname which) > -- > To unsubscribe from this list: send the line "unsubscribe linux-kernel" in > the body of a message to majordomo@vger.kernel.org > More majordomo info at http://vger.kernel.org/majordomo-info.html > Please read the FAQ at http://www.tux.org/lkml/
-- Thanks Dave
| |