08 Jun, 2012

2 commits

  • Storing NULL values in the btree is illegal and can lead to memory
    corruption and possible other fun as well. Catch it on insert, instead
    of waiting for the inevitable.

    Signed-off-by: Joern Engel
    Signed-off-by: Roland Dreier
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Joern Engel
     
  • The memory the parameter __key points to is used as an iterator in
    btree_get_prev(), so if we save off a bkey() pointer in retry_key and
    then assign that to __key, we'll end up corrupting the btree internals
    when we do eg

    longcpy(__key, bkey(geo, node, i), geo->keylen);

    to return the key value. What we should do instead is use longcpy() to
    copy the key value that retry_key points to __key.

    This can cause a btree to get corrupted by seemingly read-only
    operations such as btree_for_each_safe.

    [akpm@linux-foundation.org: avoid the double longcpy()]
    Signed-off-by: Roland Dreier
    Acked-by: Joern Engel
    Cc:
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Roland Dreier
     

11 Jan, 2012

1 commit

  • The btree_for_each API is implemented with macros that internally call
    btree_get_prev(), so if btree_get_prev() isn't exported then modules fail
    to link if they try to use one of the btree_for_each macros. Since the
    rest of the btree API is exported, we should keep things orthogonal and
    make this work too.

    Signed-off-by: Roland Dreier
    Signed-off-by: Steve Hodgson
    Acked-by: Joern Engel
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Steve Hodgson
     

31 Mar, 2011

1 commit


16 May, 2010

1 commit


21 Nov, 2009

1 commit