From: Bart Van Assche Date: Fri, 10 Feb 2017 01:28:50 +0000 (-0800) Subject: configfs: Introduce config_item_get_unless_zero() X-Git-Tag: v4.12-rc6~23^2 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=19e72d3abb63cb16d021a4066ce1a18880509e99;p=thirdparty%2Fkernel%2Flinux.git configfs: Introduce config_item_get_unless_zero() Signed-off-by: Bart Van Assche [hch: minor style tweak] Signed-off-by: Christoph Hellwig --- diff --git a/fs/configfs/item.c b/fs/configfs/item.c index 8b2a994042dde..a66f6624d8994 100644 --- a/fs/configfs/item.c +++ b/fs/configfs/item.c @@ -138,6 +138,14 @@ struct config_item *config_item_get(struct config_item *item) } EXPORT_SYMBOL(config_item_get); +struct config_item *config_item_get_unless_zero(struct config_item *item) +{ + if (item && kref_get_unless_zero(&item->ci_kref)) + return item; + return NULL; +} +EXPORT_SYMBOL(config_item_get_unless_zero); + static void config_item_cleanup(struct config_item *item) { struct config_item_type *t = item->ci_type; diff --git a/include/linux/configfs.h b/include/linux/configfs.h index 2319b8c108e87..c967090496832 100644 --- a/include/linux/configfs.h +++ b/include/linux/configfs.h @@ -74,7 +74,8 @@ extern void config_item_init_type_name(struct config_item *item, const char *name, struct config_item_type *type); -extern struct config_item * config_item_get(struct config_item *); +extern struct config_item *config_item_get(struct config_item *); +extern struct config_item *config_item_get_unless_zero(struct config_item *); extern void config_item_put(struct config_item *); struct config_item_type {