Hi Dan,
On 8/27/24 10:45 AM, Dan Carpenter wrote:
> Hello Matthias Fetzer,
>
> Commit 57d0557dfa49 ("platform/x86: thinkpad_acpi: Add Thinkpad Edge
> E531 fan support") from Aug 16, 2024 (linux-next), leads to the
> following Smatch static checker warning:
>
> drivers/platform/x86/thinkpad_acpi.c:8387 fan_set_enable()
> error: uninitialized symbol 's'.
>
> drivers/platform/x86/thinkpad_acpi.c
> 8319 static int fan_set_enable(void)
> 8320 {
> 8321 u8 s;
> 8322 int rc;
> 8323
> 8324 if (!fan_control_allowed)
> 8325 return -EPERM;
> 8326
> 8327 if (mutex_lock_killable(&fan_mutex))
> 8328 return -ERESTARTSYS;
> 8329
> 8330 switch (fan_control_access_mode) {
> 8331 case TPACPI_FAN_WR_ACPI_FANS:
> 8332 case TPACPI_FAN_WR_TPEC:
> 8333 rc = fan_get_status(&s);
> 8334 if (rc)
> 8335 break;
> 8336
> 8337 /* Don't go out of emergency fan mode */
> 8338 if (s != 7) {
> 8339 s &= 0x07;
> 8340 s |= TP_EC_FAN_AUTO | 4; /* min fan speed 4 */
> 8341 }
> 8342
> 8343 if (!acpi_ec_write(fan_status_offset, s))
> 8344 rc = -EIO;
> 8345 else {
> 8346 tp_features.fan_ctrl_status_undef = 0;
> 8347 rc = 0;
> 8348 }
> 8349 break;
> 8350
> 8351 case TPACPI_FAN_WR_ACPI_SFAN:
> 8352 rc = fan_get_status(&s);
> 8353 if (rc)
> 8354 break;
> 8355
> 8356 s &= 0x07;
> 8357
> 8358 /* Set fan to at least level 4 */
> 8359 s |= 4;
> 8360
> 8361 if (!acpi_evalf(sfan_handle, NULL, NULL, "vd", s))
> 8362 rc = -EIO;
> 8363 else
> 8364 rc = 0;
> 8365 break;
> 8366
> 8367 case TPACPI_FAN_WR_ACPI_FANW:
> 8368 if (!acpi_evalf(fanw_handle, NULL, NULL, "vdd", 0x8106, 0x05)) {
> 8369 rc = -EIO;
> 8370 break;
> 8371 }
> 8372 if (!acpi_evalf(fanw_handle, NULL, NULL, "vdd", 0x8100, 0x00)) {
> 8373 rc = -EIO;
> 8374 break;
> 8375 }
> 8376
> 8377 rc = 0;
>
> s isn't set on this path
>
> 8378 break;
> 8379
> 8380 default:
> 8381 rc = -ENXIO;
> 8382 }
> 8383
> 8384 mutex_unlock(&fan_mutex);
> 8385
> 8386 if (!rc)
> --> 8387 vdbg_printk(TPACPI_DBG_FAN,
> 8388 "fan control: set fan control register to 0x%02x\n",
> 8389 s);
> ^
> Here
>
> 8390 return rc;
> 8391 }
Thank you for reporting this.
Since this is just a debug print I think it is best to fix this by just
initializing s to 0 when it is declared and then just log 0
in the TPACPI_FAN_WR_ACPI_FANW case.
Anyone got any better suggestions ?
Regards,
Hans
|