diff options
author | Roland Dreier <rolandd@cisco.com> | 2005-10-24 10:55:29 -0700 |
---|---|---|
committer | Roland Dreier <rolandd@cisco.com> | 2005-10-24 10:55:29 -0700 |
commit | ec329a135974f1c400214dab02f09584d4beeba9 (patch) | |
tree | 235be754f76f4e7d51975d2434f226cfc75cdd08 /lib | |
parent | bbf207860931b6a033d0fbcd170ae2332c0d8216 (diff) | |
parent | 5d7edb3c1a01310725d86f0d83fb3be45685dc82 (diff) |
Manual merge of for-linus to upstream (fix conflicts in drivers/infiniband/core/ucm.c)
Diffstat (limited to 'lib')
-rw-r--r-- | lib/.gitignore | 6 | ||||
-rw-r--r-- | lib/idr.c | 13 |
2 files changed, 19 insertions, 0 deletions
diff --git a/lib/.gitignore b/lib/.gitignore new file mode 100644 index 00000000000..3bef1ea94c9 --- /dev/null +++ b/lib/.gitignore @@ -0,0 +1,6 @@ +# +# Generated files +# +gen_crc32table +crc32table.h + diff --git a/lib/idr.c b/lib/idr.c index 6415d053e2b..d4df21debc4 100644 --- a/lib/idr.c +++ b/lib/idr.c @@ -346,6 +346,19 @@ void idr_remove(struct idr *idp, int id) EXPORT_SYMBOL(idr_remove); /** + * idr_destroy - release all cached layers within an idr tree + * idp: idr handle + */ +void idr_destroy(struct idr *idp) +{ + while (idp->id_free_cnt) { + struct idr_layer *p = alloc_layer(idp); + kmem_cache_free(idr_layer_cache, p); + } +} +EXPORT_SYMBOL(idr_destroy); + +/** * idr_find - return pointer for given id * @idp: idr handle * @id: lookup key |