lkml.org 
[lkml]   [2007]   [Feb]   [22]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    SubjectRe: [PATCH 03/29] mm: allow PF_MEMALLOC from softirq context
    From
    Date
    On Thu, 2007-02-22 at 10:16 +0100, Peter Zijlstra wrote:
    > On Wed, 2007-02-21 at 16:53 +0100, Arjan van de Ven wrote:
    > > > Index: linux-2.6-git/kernel/softirq.c
    > > > ===================================================================
    > > > --- linux-2.6-git.orig/kernel/softirq.c 2006-12-14 10:02:18.000000000 +0100
    > > > +++ linux-2.6-git/kernel/softirq.c 2006-12-14 10:02:52.000000000 +0100
    > > > @@ -209,6 +209,8 @@ asmlinkage void __do_softirq(void)
    > > > __u32 pending;
    > > > int max_restart = MAX_SOFTIRQ_RESTART;
    > > > int cpu;
    > > > + unsigned long pflags = current->flags;
    > > > + current->flags &= ~PF_MEMALLOC;
    > > >
    > > > pending = local_softirq_pending();
    > > > account_system_vtime(current);
    > > > @@ -247,6 +249,7 @@ restart:
    > > >
    > > > account_system_vtime(current);
    > > > _local_bh_enable();
    > > > + current->flags = pflags;
    > >
    > > this wipes out all the flags in one go.... evil.
    > > What if something just selected this process for OOM killing? you nuke
    > > that flag here again. Would be nicer if only the PF_MEMALLOC bit got
    > > inherited in the restore path..
    >
    > would something like this:
    >
    > #define PF_PUSH(tsk, pflags, mask) \
    > do { \
    > (pflags) = ((tsk)->flags) & (mask); \
    > } while (0)
    >
    >
    > #define PF_POP(tsk, pflags, mask) \
    > do { \
    > ((tsk)->flags &= ~(mask); \
    > ((tsk)->flags |= (pflags); \
    > } while (0)
    >
    > be useful, or shall I just open code it in various places?

    technically all you need is __get_bit and __set_bit() right?
    (well a set_bit which sets to a value, not to always-1)

    more generic name at least ;)

    --
    if you want to mail me at work (you don't), use arjan (at) linux.intel.com
    Test the interaction between Linux and your BIOS via http://www.linuxfirmwarekit.org

    -
    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/

    \
     
     \ /
      Last update: 2007-02-22 10:51    [W:0.034 / U:0.776 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site