diff options
author | Paul Mackerras <paulus@samba.org> | 2008-12-16 14:38:58 +1100 |
---|---|---|
committer | Paul Mackerras <paulus@samba.org> | 2008-12-16 14:38:58 +1100 |
commit | 1e1c568d6c66d1e2e345fd15e2a1ceafc5d7e33a (patch) | |
tree | 0cf88547108a750d6eb910564ef5bf0ffb5ceef3 /lib/idr.c | |
parent | 91cac623262c1c0cd298c5c648a8bd2b647c264d (diff) | |
parent | 23e0e8afafd9ac065d81506524adf3339584044b (diff) | |
download | linux-1e1c568d6c66d1e2e345fd15e2a1ceafc5d7e33a.tar.bz2 |
Merge branch 'merge' into next
Diffstat (limited to 'lib/idr.c')
-rw-r--r-- | lib/idr.c | 8 |
1 files changed, 7 insertions, 1 deletions
diff --git a/lib/idr.c b/lib/idr.c index 7a785a0c2ea0..1c4f9281f412 100644 --- a/lib/idr.c +++ b/lib/idr.c @@ -220,8 +220,14 @@ build_up: */ while ((layers < (MAX_LEVEL - 1)) && (id >= (1 << (layers*IDR_BITS)))) { layers++; - if (!p->count) + if (!p->count) { + /* special case: if the tree is currently empty, + * then we grow the tree by moving the top node + * upwards. + */ + p->layer++; continue; + } if (!(new = get_from_free_list(idp))) { /* * The allocation failed. If we built part of |