drm/radeon: Replace all non-returning strlcpy with strscpy
strlcpy() reads the entire source buffer first. This read may exceed the destination size limit. This is both inefficient and can lead to linear read overflows if a source string is not NUL-terminated [1]. In an effort to remove strlcpy() completely [2], replace strlcpy() here with strscpy(). No return values were used, so direct replacement is safe. [1] https://www.kernel.org/doc/html/latest/process/deprecated.html#strlcpy [2] https://github.com/KSPP/linux/issues/89 Signed-off-by: Azeem Shaikh <azeemshaikh38@gmail.com> Acked-by: Alex Deucher <alexander.deucher@amd.com> Reviewed-by: Kees Cook <keescook@chromium.org> Signed-off-by: Kees Cook <keescook@chromium.org> Link: https://lore.kernel.org/r/20230522155032.2336283-1-azeemshaikh38@gmail.com
This commit is contained in:
parent
c7dce4c5d9
commit
992b8fe106
3 changed files with 5 additions and 5 deletions
|
@ -1509,7 +1509,7 @@ struct atom_context *amdgpu_atom_parse(struct card_info *card, void *bios)
|
||||||
str = CSTR(idx);
|
str = CSTR(idx);
|
||||||
if (*str != '\0') {
|
if (*str != '\0') {
|
||||||
pr_info("ATOM BIOS: %s\n", str);
|
pr_info("ATOM BIOS: %s\n", str);
|
||||||
strlcpy(ctx->vbios_version, str, sizeof(ctx->vbios_version));
|
strscpy(ctx->vbios_version, str, sizeof(ctx->vbios_version));
|
||||||
}
|
}
|
||||||
|
|
||||||
atom_rom_header = (struct _ATOM_ROM_HEADER *)CSTR(base);
|
atom_rom_header = (struct _ATOM_ROM_HEADER *)CSTR(base);
|
||||||
|
|
|
@ -2105,7 +2105,7 @@ static int radeon_atombios_parse_power_table_1_3(struct radeon_device *rdev)
|
||||||
const char *name = thermal_controller_names[power_info->info.
|
const char *name = thermal_controller_names[power_info->info.
|
||||||
ucOverdriveThermalController];
|
ucOverdriveThermalController];
|
||||||
info.addr = power_info->info.ucOverdriveControllerAddress >> 1;
|
info.addr = power_info->info.ucOverdriveControllerAddress >> 1;
|
||||||
strlcpy(info.type, name, sizeof(info.type));
|
strscpy(info.type, name, sizeof(info.type));
|
||||||
i2c_new_client_device(&rdev->pm.i2c_bus->adapter, &info);
|
i2c_new_client_device(&rdev->pm.i2c_bus->adapter, &info);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -2355,7 +2355,7 @@ static void radeon_atombios_add_pplib_thermal_controller(struct radeon_device *r
|
||||||
struct i2c_board_info info = { };
|
struct i2c_board_info info = { };
|
||||||
const char *name = pp_lib_thermal_controller_names[controller->ucType];
|
const char *name = pp_lib_thermal_controller_names[controller->ucType];
|
||||||
info.addr = controller->ucI2cAddress >> 1;
|
info.addr = controller->ucI2cAddress >> 1;
|
||||||
strlcpy(info.type, name, sizeof(info.type));
|
strscpy(info.type, name, sizeof(info.type));
|
||||||
i2c_new_client_device(&rdev->pm.i2c_bus->adapter, &info);
|
i2c_new_client_device(&rdev->pm.i2c_bus->adapter, &info);
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
|
|
|
@ -2702,7 +2702,7 @@ void radeon_combios_get_power_modes(struct radeon_device *rdev)
|
||||||
struct i2c_board_info info = { };
|
struct i2c_board_info info = { };
|
||||||
const char *name = thermal_controller_names[thermal_controller];
|
const char *name = thermal_controller_names[thermal_controller];
|
||||||
info.addr = i2c_addr >> 1;
|
info.addr = i2c_addr >> 1;
|
||||||
strlcpy(info.type, name, sizeof(info.type));
|
strscpy(info.type, name, sizeof(info.type));
|
||||||
i2c_new_client_device(&rdev->pm.i2c_bus->adapter, &info);
|
i2c_new_client_device(&rdev->pm.i2c_bus->adapter, &info);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -2719,7 +2719,7 @@ void radeon_combios_get_power_modes(struct radeon_device *rdev)
|
||||||
struct i2c_board_info info = { };
|
struct i2c_board_info info = { };
|
||||||
const char *name = "f75375";
|
const char *name = "f75375";
|
||||||
info.addr = 0x28;
|
info.addr = 0x28;
|
||||||
strlcpy(info.type, name, sizeof(info.type));
|
strscpy(info.type, name, sizeof(info.type));
|
||||||
i2c_new_client_device(&rdev->pm.i2c_bus->adapter, &info);
|
i2c_new_client_device(&rdev->pm.i2c_bus->adapter, &info);
|
||||||
DRM_INFO("Possible %s thermal controller at 0x%02x\n",
|
DRM_INFO("Possible %s thermal controller at 0x%02x\n",
|
||||||
name, info.addr);
|
name, info.addr);
|
||||||
|
|
Loading…
Add table
Reference in a new issue