On 19/12/14 17:39, Karol Wrona wrote: > iio kfifo allocate/free gained their devm_ wrappers. > > Signed-off-by: Karol Wrona <k.wrona@xxxxxxxxxxx> > Suggested-by: Jonathan Cameron <jic23@xxxxxxxxxx> Applied to the togreg branch of iio.git. One addition - added to the list of devm functions in Documentation/device-model/devres.txt > --- > drivers/iio/kfifo_buf.c | 54 +++++++++++++++++++++++++++++++++++++++++ > include/linux/iio/kfifo_buf.h | 3 +++ > 2 files changed, 57 insertions(+) > > diff --git a/drivers/iio/kfifo_buf.c b/drivers/iio/kfifo_buf.c > index a383291..5d44099 100644 > --- a/drivers/iio/kfifo_buf.c > +++ b/drivers/iio/kfifo_buf.c > @@ -191,4 +191,58 @@ void iio_kfifo_free(struct iio_buffer *r) > } > EXPORT_SYMBOL(iio_kfifo_free); > > +static void devm_iio_kfifo_release(struct device *dev, void *res) > +{ > + iio_kfifo_free(*(struct iio_buffer **)res); > +} > + > +static int devm_iio_kfifo_match(struct device *dev, void *res, void *data) > +{ > + struct iio_buffer **r = res; > + > + if (WARN_ON(!r || !*r)) > + return 0; > + > + return *r == data; > +} > + > +/** > + * devm_iio_fifo_allocate - Resource-managed iio_kfifo_allocate() > + * @dev: Device to allocate kfifo buffer for > + * > + * RETURNS: > + * Pointer to allocated iio_buffer on success, NULL on failure. > + */ > +struct iio_buffer *devm_iio_kfifo_allocate(struct device *dev) > +{ > + struct iio_buffer **ptr, *r; > + > + ptr = devres_alloc(devm_iio_kfifo_release, sizeof(*ptr), GFP_KERNEL); > + if (!ptr) > + return NULL; > + > + r = iio_kfifo_allocate(); > + if (r) { > + *ptr = r; > + devres_add(dev, ptr); > + } else { > + devres_free(ptr); > + } > + > + return r; > +} > +EXPORT_SYMBOL(devm_iio_kfifo_allocate); > + > +/** > + * devm_iio_fifo_free - Resource-managed iio_kfifo_free() > + * @dev: Device the buffer belongs to > + * @r: The buffer associated with the device > + */ > +void devm_iio_kfifo_free(struct device *dev, struct iio_buffer *r) > +{ > + WARN_ON(devres_release(dev, devm_iio_kfifo_release, > + devm_iio_kfifo_match, r)); > +} > +EXPORT_SYMBOL(devm_iio_kfifo_free); > + > MODULE_LICENSE("GPL"); > diff --git a/include/linux/iio/kfifo_buf.h b/include/linux/iio/kfifo_buf.h > index 1a8d57a..1683bc7 100644 > --- a/include/linux/iio/kfifo_buf.h > +++ b/include/linux/iio/kfifo_buf.h > @@ -8,4 +8,7 @@ > struct iio_buffer *iio_kfifo_allocate(void); > void iio_kfifo_free(struct iio_buffer *r); > > +struct iio_buffer *devm_iio_kfifo_allocate(struct device *dev); > +void devm_iio_kfifo_free(struct device *dev, struct iio_buffer *r); > + > #endif > -- To unsubscribe from this list: send the line "unsubscribe linux-iio" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html