.. | .. |
---|
| 1 | +// SPDX-License-Identifier: GPL-2.0-only |
---|
1 | 2 | /* The industrial I/O callback buffer |
---|
2 | | - * |
---|
3 | | - * This program is free software; you can redistribute it and/or modify it |
---|
4 | | - * under the terms of the GNU General Public License version 2 as published by |
---|
5 | | - * the Free Software Foundation. |
---|
6 | 3 | */ |
---|
7 | 4 | |
---|
8 | 5 | #include <linux/kernel.h> |
---|
.. | .. |
---|
36 | 33 | static void iio_buffer_cb_release(struct iio_buffer *buffer) |
---|
37 | 34 | { |
---|
38 | 35 | struct iio_cb_buffer *cb_buff = buffer_to_cb_buffer(buffer); |
---|
39 | | - kfree(cb_buff->buffer.scan_mask); |
---|
| 36 | + |
---|
| 37 | + bitmap_free(cb_buff->buffer.scan_mask); |
---|
40 | 38 | kfree(cb_buff); |
---|
41 | 39 | } |
---|
42 | 40 | |
---|
.. | .. |
---|
74 | 72 | } |
---|
75 | 73 | |
---|
76 | 74 | cb_buff->indio_dev = cb_buff->channels[0].indio_dev; |
---|
77 | | - cb_buff->buffer.scan_mask |
---|
78 | | - = kcalloc(BITS_TO_LONGS(cb_buff->indio_dev->masklength), |
---|
79 | | - sizeof(long), GFP_KERNEL); |
---|
| 75 | + cb_buff->buffer.scan_mask = bitmap_zalloc(cb_buff->indio_dev->masklength, |
---|
| 76 | + GFP_KERNEL); |
---|
80 | 77 | if (cb_buff->buffer.scan_mask == NULL) { |
---|
81 | 78 | ret = -ENOMEM; |
---|
82 | 79 | goto error_release_channels; |
---|
.. | .. |
---|
95 | 92 | return cb_buff; |
---|
96 | 93 | |
---|
97 | 94 | error_free_scan_mask: |
---|
98 | | - kfree(cb_buff->buffer.scan_mask); |
---|
| 95 | + bitmap_free(cb_buff->buffer.scan_mask); |
---|
99 | 96 | error_release_channels: |
---|
100 | 97 | iio_channel_release_all(cb_buff->channels); |
---|
101 | 98 | error_free_cb_buff: |
---|