Re: [PATCH 7/7] power: supply: ingenic-battery: free scale buffer after use
From: kernel test robot
Date: Fri Oct 04 2024 - 17:55:59 EST
Hi Matteo,
kernel test robot noticed the following build errors:
[auto build test ERROR on fec496684388685647652ab4213454fbabdab099]
url: https://github.com/intel-lab-lkp/linux/commits/Matteo-Martelli/iio-core-add-read_avail_release_resource-callback-to-fix-race/20241004-013654
base: fec496684388685647652ab4213454fbabdab099
patch link: https://lore.kernel.org/r/20241003-iio-read-avail-release-v1-7-c70cc7d9c2e0%40gmail.com
patch subject: [PATCH 7/7] power: supply: ingenic-battery: free scale buffer after use
config: m68k-allmodconfig (https://download.01.org/0day-ci/archive/20241005/202410050547.Pybj1FLp-lkp@xxxxxxxxx/config)
compiler: m68k-linux-gcc (GCC) 14.1.0
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20241005/202410050547.Pybj1FLp-lkp@xxxxxxxxx/reproduce)
If you fix the issue in a separate patch/commit (i.e. not just a new version of
the same patch/commit), kindly add following tags
| Reported-by: kernel test robot <lkp@xxxxxxxxx>
| Closes: https://lore.kernel.org/oe-kbuild-all/202410050547.Pybj1FLp-lkp@xxxxxxxxx/
All errors (new ones prefixed by >>):
drivers/power/supply/ingenic-battery.c: In function 'ingenic_battery_set_scale':
>> drivers/power/supply/ingenic-battery.c:120:9: error: implicit declaration of function 'kfree'; did you mean 'kvfree'? [-Wimplicit-function-declaration]
120 | kfree(scale_raw);
| ^~~~~
| kvfree
vim +120 drivers/power/supply/ingenic-battery.c
59
60 /* Set the most appropriate IIO channel voltage reference scale
61 * based on the battery's max voltage.
62 */
63 static int ingenic_battery_set_scale(struct ingenic_battery *bat)
64 {
65 const int *scale_raw;
66 int scale_len, scale_type, best_idx = -1, best_mV, max_raw, i, ret;
67 u64 max_mV;
68
69 ret = iio_read_max_channel_raw(bat->channel, &max_raw);
70 if (ret) {
71 dev_err(bat->dev, "Unable to read max raw channel value\n");
72 return ret;
73 }
74
75 ret = iio_read_avail_channel_attribute(bat->channel, &scale_raw,
76 &scale_type, &scale_len,
77 IIO_CHAN_INFO_SCALE);
78 if (ret < 0) {
79 dev_err(bat->dev, "Unable to read channel avail scale\n");
80 return ret;
81 }
82 if (ret != IIO_AVAIL_LIST || scale_type != IIO_VAL_FRACTIONAL_LOG2) {
83 ret = -EINVAL;
84 goto out;
85 }
86
87 max_mV = bat->info->voltage_max_design_uv / 1000;
88
89 for (i = 0; i < scale_len; i += 2) {
90 u64 scale_mV = (max_raw * scale_raw[i]) >> scale_raw[i + 1];
91
92 if (scale_mV < max_mV)
93 continue;
94
95 if (best_idx >= 0 && scale_mV > best_mV)
96 continue;
97
98 best_mV = scale_mV;
99 best_idx = i;
100 }
101
102 if (best_idx < 0) {
103 dev_err(bat->dev, "Unable to find matching voltage scale\n");
104 ret = -EINVAL;
105 goto out;
106 }
107
108 /* Only set scale if there is more than one (fractional) entry */
109 if (scale_len > 2) {
110 ret = iio_write_channel_attribute(bat->channel,
111 scale_raw[best_idx],
112 scale_raw[best_idx + 1],
113 IIO_CHAN_INFO_SCALE);
114 if (ret)
115 goto out;
116 }
117
118 ret = 0;
119 out:
> 120 kfree(scale_raw);
121 return ret;
122 }
123
--
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki