On Fri, Dec 16, 2016 at 8:02 PM, Kees Cook <keescook@xxxxxxxxxxxx> wrote: > Prepare to mark sensitive kernel structures for randomization by making > sure they're using designated initializers. These were identified during > allyesconfig builds of x86, arm, and arm64, with most initializer fixes > extracted from grsecurity. > > Signed-off-by: Kees Cook <keescook@xxxxxxxxxxxx> Applied. thanks! Alex > --- > drivers/gpu/drm/amd/amdgpu/amdgpu_cgs.c | 84 +++++++++++----------- > drivers/gpu/drm/amd/amdgpu/amdgpu_gtt_mgr.c | 10 +-- > .../drm/amd/powerplay/hwmgr/cz_clockpowergating.c | 12 +++- > drivers/gpu/drm/amd/powerplay/hwmgr/cz_hwmgr.c | 58 +++++++-------- > drivers/gpu/drm/amd/powerplay/hwmgr/smu7_thermal.c | 22 +++--- > 5 files changed, 96 insertions(+), 90 deletions(-) > > diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_cgs.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_cgs.c > index 9ada56c16a58..fd1ee40c41a2 100644 > --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_cgs.c > +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_cgs.c > @@ -1197,51 +1197,51 @@ static int amdgpu_cgs_call_acpi_method(struct cgs_device *cgs_device, > } > > static const struct cgs_ops amdgpu_cgs_ops = { > - amdgpu_cgs_gpu_mem_info, > - amdgpu_cgs_gmap_kmem, > - amdgpu_cgs_gunmap_kmem, > - amdgpu_cgs_alloc_gpu_mem, > - amdgpu_cgs_free_gpu_mem, > - amdgpu_cgs_gmap_gpu_mem, > - amdgpu_cgs_gunmap_gpu_mem, > - amdgpu_cgs_kmap_gpu_mem, > - amdgpu_cgs_kunmap_gpu_mem, > - amdgpu_cgs_read_register, > - amdgpu_cgs_write_register, > - amdgpu_cgs_read_ind_register, > - amdgpu_cgs_write_ind_register, > - amdgpu_cgs_read_pci_config_byte, > - amdgpu_cgs_read_pci_config_word, > - amdgpu_cgs_read_pci_config_dword, > - amdgpu_cgs_write_pci_config_byte, > - amdgpu_cgs_write_pci_config_word, > - amdgpu_cgs_write_pci_config_dword, > - amdgpu_cgs_get_pci_resource, > - amdgpu_cgs_atom_get_data_table, > - amdgpu_cgs_atom_get_cmd_table_revs, > - amdgpu_cgs_atom_exec_cmd_table, > - amdgpu_cgs_create_pm_request, > - amdgpu_cgs_destroy_pm_request, > - amdgpu_cgs_set_pm_request, > - amdgpu_cgs_pm_request_clock, > - amdgpu_cgs_pm_request_engine, > - amdgpu_cgs_pm_query_clock_limits, > - amdgpu_cgs_set_camera_voltages, > - amdgpu_cgs_get_firmware_info, > - amdgpu_cgs_rel_firmware, > - amdgpu_cgs_set_powergating_state, > - amdgpu_cgs_set_clockgating_state, > - amdgpu_cgs_get_active_displays_info, > - amdgpu_cgs_notify_dpm_enabled, > - amdgpu_cgs_call_acpi_method, > - amdgpu_cgs_query_system_info, > - amdgpu_cgs_is_virtualization_enabled > + .gpu_mem_info = amdgpu_cgs_gpu_mem_info, > + .gmap_kmem = amdgpu_cgs_gmap_kmem, > + .gunmap_kmem = amdgpu_cgs_gunmap_kmem, > + .alloc_gpu_mem = amdgpu_cgs_alloc_gpu_mem, > + .free_gpu_mem = amdgpu_cgs_free_gpu_mem, > + .gmap_gpu_mem = amdgpu_cgs_gmap_gpu_mem, > + .gunmap_gpu_mem = amdgpu_cgs_gunmap_gpu_mem, > + .kmap_gpu_mem = amdgpu_cgs_kmap_gpu_mem, > + .kunmap_gpu_mem = amdgpu_cgs_kunmap_gpu_mem, > + .read_register = amdgpu_cgs_read_register, > + .write_register = amdgpu_cgs_write_register, > + .read_ind_register = amdgpu_cgs_read_ind_register, > + .write_ind_register = amdgpu_cgs_write_ind_register, > + .read_pci_config_byte = amdgpu_cgs_read_pci_config_byte, > + .read_pci_config_word = amdgpu_cgs_read_pci_config_word, > + .read_pci_config_dword = amdgpu_cgs_read_pci_config_dword, > + .write_pci_config_byte = amdgpu_cgs_write_pci_config_byte, > + .write_pci_config_word = amdgpu_cgs_write_pci_config_word, > + .write_pci_config_dword = amdgpu_cgs_write_pci_config_dword, > + .get_pci_resource = amdgpu_cgs_get_pci_resource, > + .atom_get_data_table = amdgpu_cgs_atom_get_data_table, > + .atom_get_cmd_table_revs = amdgpu_cgs_atom_get_cmd_table_revs, > + .atom_exec_cmd_table = amdgpu_cgs_atom_exec_cmd_table, > + .create_pm_request = amdgpu_cgs_create_pm_request, > + .destroy_pm_request = amdgpu_cgs_destroy_pm_request, > + .set_pm_request = amdgpu_cgs_set_pm_request, > + .pm_request_clock = amdgpu_cgs_pm_request_clock, > + .pm_request_engine = amdgpu_cgs_pm_request_engine, > + .pm_query_clock_limits = amdgpu_cgs_pm_query_clock_limits, > + .set_camera_voltages = amdgpu_cgs_set_camera_voltages, > + .get_firmware_info = amdgpu_cgs_get_firmware_info, > + .rel_firmware = amdgpu_cgs_rel_firmware, > + .set_powergating_state = amdgpu_cgs_set_powergating_state, > + .set_clockgating_state = amdgpu_cgs_set_clockgating_state, > + .get_active_displays_info = amdgpu_cgs_get_active_displays_info, > + .notify_dpm_enabled = amdgpu_cgs_notify_dpm_enabled, > + .call_acpi_method = amdgpu_cgs_call_acpi_method, > + .query_system_info = amdgpu_cgs_query_system_info, > + .is_virtualization_enabled = amdgpu_cgs_is_virtualization_enabled, > }; > > static const struct cgs_os_ops amdgpu_cgs_os_ops = { > - amdgpu_cgs_add_irq_source, > - amdgpu_cgs_irq_get, > - amdgpu_cgs_irq_put > + .add_irq_source = amdgpu_cgs_add_irq_source, > + .irq_get = amdgpu_cgs_irq_get, > + .irq_put = amdgpu_cgs_irq_put > }; > > struct cgs_device *amdgpu_cgs_create_device(struct amdgpu_device *adev) > diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_gtt_mgr.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_gtt_mgr.c > index 00f46b0e076d..69ab2ee4cfba 100644 > --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_gtt_mgr.c > +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_gtt_mgr.c > @@ -242,9 +242,9 @@ static void amdgpu_gtt_mgr_debug(struct ttm_mem_type_manager *man, > } > > const struct ttm_mem_type_manager_func amdgpu_gtt_mgr_func = { > - amdgpu_gtt_mgr_init, > - amdgpu_gtt_mgr_fini, > - amdgpu_gtt_mgr_new, > - amdgpu_gtt_mgr_del, > - amdgpu_gtt_mgr_debug > + .init = amdgpu_gtt_mgr_init, > + .takedown = amdgpu_gtt_mgr_fini, > + .get_node = amdgpu_gtt_mgr_new, > + .put_node = amdgpu_gtt_mgr_del, > + .debug = amdgpu_gtt_mgr_debug > }; > diff --git a/drivers/gpu/drm/amd/powerplay/hwmgr/cz_clockpowergating.c b/drivers/gpu/drm/amd/powerplay/hwmgr/cz_clockpowergating.c > index b0c63c5f54c9..3bdce9e27499 100644 > --- a/drivers/gpu/drm/amd/powerplay/hwmgr/cz_clockpowergating.c > +++ b/drivers/gpu/drm/amd/powerplay/hwmgr/cz_clockpowergating.c > @@ -240,10 +240,16 @@ int cz_dpm_powergate_vce(struct pp_hwmgr *hwmgr, bool bgate) > > static const struct phm_master_table_item cz_enable_clock_power_gatings_list[] = { > /*we don't need an exit table here, because there is only D3 cold on Kv*/ > - { phm_cf_want_uvd_power_gating, cz_tf_uvd_power_gating_initialize }, > - { phm_cf_want_vce_power_gating, cz_tf_vce_power_gating_initialize }, > + { > + .isFunctionNeededInRuntimeTable = phm_cf_want_uvd_power_gating, > + .tableFunction = cz_tf_uvd_power_gating_initialize > + }, > + { > + .isFunctionNeededInRuntimeTable = phm_cf_want_vce_power_gating, > + .tableFunction = cz_tf_vce_power_gating_initialize > + }, > /* to do { NULL, cz_tf_xdma_power_gating_enable }, */ > - { NULL, NULL } > + { } > }; > > const struct phm_master_table_header cz_phm_enable_clock_power_gatings_master = { > diff --git a/drivers/gpu/drm/amd/powerplay/hwmgr/cz_hwmgr.c b/drivers/gpu/drm/amd/powerplay/hwmgr/cz_hwmgr.c > index 4b14f259a147..74dbbd12694a 100644 > --- a/drivers/gpu/drm/amd/powerplay/hwmgr/cz_hwmgr.c > +++ b/drivers/gpu/drm/amd/powerplay/hwmgr/cz_hwmgr.c > @@ -888,13 +888,13 @@ static int cz_tf_update_low_mem_pstate(struct pp_hwmgr *hwmgr, > } > > static const struct phm_master_table_item cz_set_power_state_list[] = { > - {NULL, cz_tf_update_sclk_limit}, > - {NULL, cz_tf_set_deep_sleep_sclk_threshold}, > - {NULL, cz_tf_set_watermark_threshold}, > - {NULL, cz_tf_set_enabled_levels}, > - {NULL, cz_tf_enable_nb_dpm}, > - {NULL, cz_tf_update_low_mem_pstate}, > - {NULL, NULL} > + { .tableFunction = cz_tf_update_sclk_limit }, > + { .tableFunction = cz_tf_set_deep_sleep_sclk_threshold }, > + { .tableFunction = cz_tf_set_watermark_threshold }, > + { .tableFunction = cz_tf_set_enabled_levels }, > + { .tableFunction = cz_tf_enable_nb_dpm }, > + { .tableFunction = cz_tf_update_low_mem_pstate }, > + { } > }; > > static const struct phm_master_table_header cz_set_power_state_master = { > @@ -904,15 +904,15 @@ static const struct phm_master_table_header cz_set_power_state_master = { > }; > > static const struct phm_master_table_item cz_setup_asic_list[] = { > - {NULL, cz_tf_reset_active_process_mask}, > - {NULL, cz_tf_upload_pptable_to_smu}, > - {NULL, cz_tf_init_sclk_limit}, > - {NULL, cz_tf_init_uvd_limit}, > - {NULL, cz_tf_init_vce_limit}, > - {NULL, cz_tf_init_acp_limit}, > - {NULL, cz_tf_init_power_gate_state}, > - {NULL, cz_tf_init_sclk_threshold}, > - {NULL, NULL} > + { .tableFunction = cz_tf_reset_active_process_mask }, > + { .tableFunction = cz_tf_upload_pptable_to_smu }, > + { .tableFunction = cz_tf_init_sclk_limit }, > + { .tableFunction = cz_tf_init_uvd_limit }, > + { .tableFunction = cz_tf_init_vce_limit }, > + { .tableFunction = cz_tf_init_acp_limit }, > + { .tableFunction = cz_tf_init_power_gate_state }, > + { .tableFunction = cz_tf_init_sclk_threshold }, > + { } > }; > > static const struct phm_master_table_header cz_setup_asic_master = { > @@ -957,10 +957,10 @@ static int cz_tf_reset_cc6_data(struct pp_hwmgr *hwmgr, > } > > static const struct phm_master_table_item cz_power_down_asic_list[] = { > - {NULL, cz_tf_power_up_display_clock_sys_pll}, > - {NULL, cz_tf_clear_nb_dpm_flag}, > - {NULL, cz_tf_reset_cc6_data}, > - {NULL, NULL} > + { .tableFunction = cz_tf_power_up_display_clock_sys_pll }, > + { .tableFunction = cz_tf_clear_nb_dpm_flag }, > + { .tableFunction = cz_tf_reset_cc6_data }, > + { } > }; > > static const struct phm_master_table_header cz_power_down_asic_master = { > @@ -1068,8 +1068,8 @@ static int cz_tf_check_for_dpm_enabled(struct pp_hwmgr *hwmgr, > } > > static const struct phm_master_table_item cz_disable_dpm_list[] = { > - { NULL, cz_tf_check_for_dpm_enabled}, > - {NULL, NULL}, > + { .tableFunction = cz_tf_check_for_dpm_enabled }, > + { }, > }; > > > @@ -1080,13 +1080,13 @@ static const struct phm_master_table_header cz_disable_dpm_master = { > }; > > static const struct phm_master_table_item cz_enable_dpm_list[] = { > - { NULL, cz_tf_check_for_dpm_disabled }, > - { NULL, cz_tf_program_voting_clients }, > - { NULL, cz_tf_start_dpm}, > - { NULL, cz_tf_program_bootup_state}, > - { NULL, cz_tf_enable_didt }, > - { NULL, cz_tf_reset_acp_boot_level }, > - {NULL, NULL}, > + { .tableFunction = cz_tf_check_for_dpm_disabled }, > + { .tableFunction = cz_tf_program_voting_clients }, > + { .tableFunction = cz_tf_start_dpm }, > + { .tableFunction = cz_tf_program_bootup_state }, > + { .tableFunction = cz_tf_enable_didt }, > + { .tableFunction = cz_tf_reset_acp_boot_level }, > + { }, > }; > > static const struct phm_master_table_header cz_enable_dpm_master = { > diff --git a/drivers/gpu/drm/amd/powerplay/hwmgr/smu7_thermal.c b/drivers/gpu/drm/amd/powerplay/hwmgr/smu7_thermal.c > index 29d0319b22e6..a0e4adee9325 100644 > --- a/drivers/gpu/drm/amd/powerplay/hwmgr/smu7_thermal.c > +++ b/drivers/gpu/drm/amd/powerplay/hwmgr/smu7_thermal.c > @@ -506,18 +506,18 @@ static int tf_smu7_thermal_disable_alert(struct pp_hwmgr *hwmgr, > > static const struct phm_master_table_item > phm_thermal_start_thermal_controller_master_list[] = { > - {NULL, tf_smu7_thermal_initialize}, > - {NULL, tf_smu7_thermal_set_temperature_range}, > - {NULL, tf_smu7_thermal_enable_alert}, > - {NULL, smum_thermal_avfs_enable}, > + { .tableFunction = tf_smu7_thermal_initialize }, > + { .tableFunction = tf_smu7_thermal_set_temperature_range }, > + { .tableFunction = tf_smu7_thermal_enable_alert }, > + { .tableFunction = smum_thermal_avfs_enable }, > /* We should restrict performance levels to low before we halt the SMC. > * On the other hand we are still in boot state when we do this > * so it would be pointless. > * If this assumption changes we have to revisit this table. > */ > - {NULL, smum_thermal_setup_fan_table}, > - {NULL, tf_smu7_thermal_start_smc_fan_control}, > - {NULL, NULL} > + { .tableFunction = smum_thermal_setup_fan_table }, > + { .tableFunction = tf_smu7_thermal_start_smc_fan_control }, > + { } > }; > > static const struct phm_master_table_header > @@ -529,10 +529,10 @@ phm_thermal_start_thermal_controller_master = { > > static const struct phm_master_table_item > phm_thermal_set_temperature_range_master_list[] = { > - {NULL, tf_smu7_thermal_disable_alert}, > - {NULL, tf_smu7_thermal_set_temperature_range}, > - {NULL, tf_smu7_thermal_enable_alert}, > - {NULL, NULL} > + { .tableFunction = tf_smu7_thermal_disable_alert }, > + { .tableFunction = tf_smu7_thermal_set_temperature_range }, > + { .tableFunction = tf_smu7_thermal_enable_alert }, > + { } > }; > > static const struct phm_master_table_header > -- > 2.7.4 > > > -- > Kees Cook > Nexus Security > _______________________________________________ > dri-devel mailing list > dri-devel@xxxxxxxxxxxxxxxxxxxxx > https://lists.freedesktop.org/mailman/listinfo/dri-devel _______________________________________________ dri-devel mailing list dri-devel@xxxxxxxxxxxxxxxxxxxxx https://lists.freedesktop.org/mailman/listinfo/dri-devel