| .. | .. |
|---|
| 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: |
|---|