git.openpandora.org
/
pandora-kernel.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
ath9k: Enable MIB and TIM interrupts for station mode.
[pandora-kernel.git]
/
lib
/
rbtree.c
diff --git
a/lib/rbtree.c
b/lib/rbtree.c
index
1e55ba1
..
9956b99
100644
(file)
--- a/
lib/rbtree.c
+++ b/
lib/rbtree.c
@@
-292,7
+292,7
@@
EXPORT_SYMBOL(rb_erase);
/*
* This function returns the first node (in sort order) of the tree.
*/
/*
* This function returns the first node (in sort order) of the tree.
*/
-struct rb_node *rb_first(struct rb_root *root)
+struct rb_node *rb_first(
const
struct rb_root *root)
{
struct rb_node *n;
{
struct rb_node *n;
@@
-305,7
+305,7
@@
struct rb_node *rb_first(struct rb_root *root)
}
EXPORT_SYMBOL(rb_first);
}
EXPORT_SYMBOL(rb_first);
-struct rb_node *rb_last(struct rb_root *root)
+struct rb_node *rb_last(
const
struct rb_root *root)
{
struct rb_node *n;
{
struct rb_node *n;
@@
-318,17
+318,20
@@
struct rb_node *rb_last(struct rb_root *root)
}
EXPORT_SYMBOL(rb_last);
}
EXPORT_SYMBOL(rb_last);
-struct rb_node *rb_next(struct rb_node *node)
+struct rb_node *rb_next(
const
struct rb_node *node)
{
struct rb_node *parent;
{
struct rb_node *parent;
+ if (rb_parent(node) == node)
+ return NULL;
+
/* If we have a right-hand child, go down and then left as far
as we can. */
if (node->rb_right) {
node = node->rb_right;
while (node->rb_left)
node=node->rb_left;
/* If we have a right-hand child, go down and then left as far
as we can. */
if (node->rb_right) {
node = node->rb_right;
while (node->rb_left)
node=node->rb_left;
- return node;
+ return
(struct rb_node *)
node;
}
/* No right-hand children. Everything down and left is
}
/* No right-hand children. Everything down and left is
@@
-344,17
+347,20
@@
struct rb_node *rb_next(struct rb_node *node)
}
EXPORT_SYMBOL(rb_next);
}
EXPORT_SYMBOL(rb_next);
-struct rb_node *rb_prev(struct rb_node *node)
+struct rb_node *rb_prev(
const
struct rb_node *node)
{
struct rb_node *parent;
{
struct rb_node *parent;
+ if (rb_parent(node) == node)
+ return NULL;
+
/* If we have a left-hand child, go down and then right as far
as we can. */
if (node->rb_left) {
node = node->rb_left;
while (node->rb_right)
node=node->rb_right;
/* If we have a left-hand child, go down and then right as far
as we can. */
if (node->rb_left) {
node = node->rb_left;
while (node->rb_right)
node=node->rb_right;
- return node;
+ return
(struct rb_node *)
node;
}
/* No left-hand children. Go up till we find an ancestor which
}
/* No left-hand children. Go up till we find an ancestor which