On Wed, 26 Jan 2011 17:57:22 -0800 Andrew Morton <akpm@xxxxxxxxxxxxxxxxxxxx> wrote: > On Thu, 27 Jan 2011 10:43:39 +0900 KAMEZAWA Hiroyuki <kamezawa.hiroyu@xxxxxxxxxxxxxx> wrote: > > > --- mmotm-0125.orig/kernel/res_counter.c > > +++ mmotm-0125/kernel/res_counter.c > > @@ -126,10 +126,24 @@ ssize_t res_counter_read(struct res_coun > > pos, buf, s - buf); > > } > > > > +#if BITS_PER_LONG == 32 > > +u64 res_counter_read_u64(struct res_counter *counter, int member) > > +{ > > + unsigned long flags; > > + u64 ret; > > + > > + spin_lock_irqsave(&counter->lock, flags); > > + ret = *res_counter_member(counter, member); > > + spin_unlock_irqrestore(&counter->lock, flags); > > + > > + return ret; > > +} > > +#else > > u64 res_counter_read_u64(struct res_counter *counter, int member) > > { > > return *res_counter_member(counter, member); > > } > > +#endif > > _irqsave is only needed if the lock will be taken from irq context. > Does that happen? > I just obey current desing of res_counter, as bugfix. This counter is designed to be safe against irq context. Adding CC: to Balbir. To be honest, it has never happened since res_counter is introduced. I imagine there was a big plan when this counter was designed. But I think it will be never called other than memcg because cpu, blkio controller haven't use res_counter, finally. And memcg tends to use per-cpu counter because of performance. If I need to remove irq flags from this function, I'll do in another patch which changes total design of res_counter and make it not safe agaisnt irq context. Thanks, -Kame -- To unsubscribe, send a message with 'unsubscribe linux-mm' in the body to majordomo@xxxxxxxxxx For more info on Linux MM, see: http://www.linux-mm.org/ . Fight unfair telecom policy in Canada: sign http://dissolvethecrtc.ca/ Don't email: <a href=mailto:"dont@xxxxxxxxx"> email@xxxxxxxxx </a>