Redundant uses of might_sleep_if()

From: ioana alexandrescu (ioanamitu_at_yahoo.com)
Date: 01/30/04

  • Next message: Adrian Bunk: "[2.4 patch] disallow modular BINFMT_ELF (fwd)"
    Date:	Fri, 30 Jan 2004 11:40:57 -0800 (PST)
    To: linux-kernel@vger.kernel.org
    
    

    In kernel 2.6.1 it appears that the only necessary
    uses of might_sleep_if()are in __alloc_pages(), and
    perhaps, in cache_alloc_debugcheck_before() (see
    notes).

    Other uses of might_sleep_if() appear to be redundant:

    Pte_chain_alloc()-->might_sleep_if(), but also
    Pte_chain_alloc-->kmem_cache_alloc
      -->__cache_alloc -->__cache_alloc()
      -->cache_alloc_debugcheck_before()
      -->might_sleep_if()

    skb_share_check()-->might_sleep_if(), but also
    skb_share_check()-->skb_clone()
      -->kmem_cache_alloc()[as above]

    skb_unshare()-->might_sleep_if(), but also
    skb_unshare()-->skb_copy()
      -->kmem_cache_alloc()[as above]

    Other paths through skb_unshare, same result.

    QUERY: Should these redundant uses be patched out?

    Note 1: all present uses of might_sleep_if(cond)
    resolve to the equivalent of might_sleep_if(gfp_mask
     & __GFP_WAIT) - which suggests an encapsulating
    macro:

    #define might_sleep_if_wait(flags) might_sleep_if\
    (flags & __GFP_WAIT)

    Note 2: preliminary analysis suggests that even
      cache_alloc_debugcheck_before()-->might_sleep_if()
    is, strictly speaking, unnecessary since the same
    check in performed in __alloc_pages(). Of course the
    duplicated check doesn't cost much.

    Carl Spalletta

    --
    See New Jersey and die!
    __________________________________
    Do you Yahoo!?
    Yahoo! SiteBuilder - Free web site building tool. Try it!
    http://webhosting.yahoo.com/ps/sb/
    -
    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/
    

  • Next message: Adrian Bunk: "[2.4 patch] disallow modular BINFMT_ELF (fwd)"

    Relevant Pages