diff mbox

drm/amd/powerplay: rv: Use designated initializers

Message ID 20170725214756.GA102262@beast (mailing list archive)
State New, archived
Headers show

Commit Message

Kees Cook July 25, 2017, 9:47 p.m. UTC
As done for vega10 in commit 3ddd396f6b57 ("drm/amd/powerplay: Use
designated initializers") mark other tableFunction entries with designated
initializers. The randstruct plugin requires designated initializers for
structures that are entirely function pointers.

Cc: Rex Zhu <Rex.Zhu@amd.com>
Cc: Hawking Zhang <Hawking.Zhang@amd.com>
Cc: Alex Deucher <alexander.deucher@amd.com>
Signed-off-by: Kees Cook <keescook@chromium.org>
---
If I can get an Ack for this, I'll carry it in the gcc-plugins tree, unless
you think this is worth landing for v4.13, in which case, please take it
now. :)

Thanks!
---
 drivers/gpu/drm/amd/powerplay/hwmgr/rv_hwmgr.c | 8 ++++----
 1 file changed, 4 insertions(+), 4 deletions(-)

Comments

Alex Deucher July 28, 2017, 1:43 a.m. UTC | #1
On Tue, Jul 25, 2017 at 5:47 PM, Kees Cook <keescook@chromium.org> wrote:
> As done for vega10 in commit 3ddd396f6b57 ("drm/amd/powerplay: Use
> designated initializers") mark other tableFunction entries with designated
> initializers. The randstruct plugin requires designated initializers for
> structures that are entirely function pointers.
>
> Cc: Rex Zhu <Rex.Zhu@amd.com>
> Cc: Hawking Zhang <Hawking.Zhang@amd.com>
> Cc: Alex Deucher <alexander.deucher@amd.com>
> Signed-off-by: Kees Cook <keescook@chromium.org>
> ---
> If I can get an Ack for this, I'll carry it in the gcc-plugins tree, unless
> you think this is worth landing for v4.13, in which case, please take it
> now. :)
>

Acked-by: Alex Deucher <alexander.deucher@amd.com>

I'm happy to take this through my tree if that is ok with you.

Alex

> Thanks!
> ---
>  drivers/gpu/drm/amd/powerplay/hwmgr/rv_hwmgr.c | 8 ++++----
>  1 file changed, 4 insertions(+), 4 deletions(-)
>
> diff --git a/drivers/gpu/drm/amd/powerplay/hwmgr/rv_hwmgr.c b/drivers/gpu/drm/amd/powerplay/hwmgr/rv_hwmgr.c
> index 4c7f430b36eb..8e6cfd89c7e0 100644
> --- a/drivers/gpu/drm/amd/powerplay/hwmgr/rv_hwmgr.c
> +++ b/drivers/gpu/drm/amd/powerplay/hwmgr/rv_hwmgr.c
> @@ -308,8 +308,8 @@ static int rv_tf_set_num_active_display(struct pp_hwmgr *hwmgr, void *input,
>  }
>
>  static const struct phm_master_table_item rv_set_power_state_list[] = {
> -       { NULL, rv_tf_set_clock_limit },
> -       { NULL, rv_tf_set_num_active_display },
> +       { .tableFunction = rv_tf_set_clock_limit },
> +       { .tableFunction = rv_tf_set_num_active_display },
>         { }
>  };
>
> @@ -382,7 +382,7 @@ static int rv_tf_disable_gfx_off(struct pp_hwmgr *hwmgr,
>  }
>
>  static const struct phm_master_table_item rv_disable_dpm_list[] = {
> -       {NULL, rv_tf_disable_gfx_off},
> +       { .tableFunction = rv_tf_disable_gfx_off },
>         { },
>  };
>
> @@ -407,7 +407,7 @@ static int rv_tf_enable_gfx_off(struct pp_hwmgr *hwmgr,
>  }
>
>  static const struct phm_master_table_item rv_enable_dpm_list[] = {
> -       {NULL, rv_tf_enable_gfx_off},
> +       { .tableFunction = rv_tf_enable_gfx_off },
>         { },
>  };
>
> --
> 2.7.4
>
>
> --
> Kees Cook
> Pixel Security
> _______________________________________________
> amd-gfx mailing list
> amd-gfx@lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/amd-gfx
Christian König July 28, 2017, 9:13 a.m. UTC | #2
Am 28.07.2017 um 03:43 schrieb Alex Deucher:
> On Tue, Jul 25, 2017 at 5:47 PM, Kees Cook <keescook@chromium.org> wrote:
>> As done for vega10 in commit 3ddd396f6b57 ("drm/amd/powerplay: Use
>> designated initializers") mark other tableFunction entries with designated
>> initializers. The randstruct plugin requires designated initializers for
>> structures that are entirely function pointers.
>>
>> Cc: Rex Zhu <Rex.Zhu@amd.com>
>> Cc: Hawking Zhang <Hawking.Zhang@amd.com>
>> Cc: Alex Deucher <alexander.deucher@amd.com>
>> Signed-off-by: Kees Cook <keescook@chromium.org>
>> ---
>> If I can get an Ack for this, I'll carry it in the gcc-plugins tree, unless
>> you think this is worth landing for v4.13, in which case, please take it
>> now. :)
>>
> Acked-by: Alex Deucher <alexander.deucher@amd.com>
>
> I'm happy to take this through my tree if that is ok with you.

I'm wondering a bit how the plugin detects that it can randomize a 
structure layout?

We have a couple of structs where this would be fatal.

Christian.

>
> Alex
>
>> Thanks!
>> ---
>>   drivers/gpu/drm/amd/powerplay/hwmgr/rv_hwmgr.c | 8 ++++----
>>   1 file changed, 4 insertions(+), 4 deletions(-)
>>
>> diff --git a/drivers/gpu/drm/amd/powerplay/hwmgr/rv_hwmgr.c b/drivers/gpu/drm/amd/powerplay/hwmgr/rv_hwmgr.c
>> index 4c7f430b36eb..8e6cfd89c7e0 100644
>> --- a/drivers/gpu/drm/amd/powerplay/hwmgr/rv_hwmgr.c
>> +++ b/drivers/gpu/drm/amd/powerplay/hwmgr/rv_hwmgr.c
>> @@ -308,8 +308,8 @@ static int rv_tf_set_num_active_display(struct pp_hwmgr *hwmgr, void *input,
>>   }
>>
>>   static const struct phm_master_table_item rv_set_power_state_list[] = {
>> -       { NULL, rv_tf_set_clock_limit },
>> -       { NULL, rv_tf_set_num_active_display },
>> +       { .tableFunction = rv_tf_set_clock_limit },
>> +       { .tableFunction = rv_tf_set_num_active_display },
>>          { }
>>   };
>>
>> @@ -382,7 +382,7 @@ static int rv_tf_disable_gfx_off(struct pp_hwmgr *hwmgr,
>>   }
>>
>>   static const struct phm_master_table_item rv_disable_dpm_list[] = {
>> -       {NULL, rv_tf_disable_gfx_off},
>> +       { .tableFunction = rv_tf_disable_gfx_off },
>>          { },
>>   };
>>
>> @@ -407,7 +407,7 @@ static int rv_tf_enable_gfx_off(struct pp_hwmgr *hwmgr,
>>   }
>>
>>   static const struct phm_master_table_item rv_enable_dpm_list[] = {
>> -       {NULL, rv_tf_enable_gfx_off},
>> +       { .tableFunction = rv_tf_enable_gfx_off },
>>          { },
>>   };
>>
>> --
>> 2.7.4
>>
>>
>> --
>> Kees Cook
>> Pixel Security
>> _______________________________________________
>> amd-gfx mailing list
>> amd-gfx@lists.freedesktop.org
>> https://lists.freedesktop.org/mailman/listinfo/amd-gfx
> _______________________________________________
> amd-gfx mailing list
> amd-gfx@lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/amd-gfx
Kees Cook July 28, 2017, 5:10 p.m. UTC | #3
On Fri, Jul 28, 2017 at 2:13 AM, Christian König
<christian.koenig@amd.com> wrote:
> Am 28.07.2017 um 03:43 schrieb Alex Deucher:
>>
>> On Tue, Jul 25, 2017 at 5:47 PM, Kees Cook <keescook@chromium.org> wrote:
>>>
>>> As done for vega10 in commit 3ddd396f6b57 ("drm/amd/powerplay: Use
>>> designated initializers") mark other tableFunction entries with
>>> designated
>>> initializers. The randstruct plugin requires designated initializers for
>>> structures that are entirely function pointers.
>>>
>>> Cc: Rex Zhu <Rex.Zhu@amd.com>
>>> Cc: Hawking Zhang <Hawking.Zhang@amd.com>
>>> Cc: Alex Deucher <alexander.deucher@amd.com>
>>> Signed-off-by: Kees Cook <keescook@chromium.org>
>>> ---
>>> If I can get an Ack for this, I'll carry it in the gcc-plugins tree,
>>> unless
>>> you think this is worth landing for v4.13, in which case, please take it
>>> now. :)
>>>
>> Acked-by: Alex Deucher <alexander.deucher@amd.com>
>>
>> I'm happy to take this through my tree if that is ok with you.
>
>
> I'm wondering a bit how the plugin detects that it can randomize a structure
> layout?
>
> We have a couple of structs where this would be fatal.

Automatic randomization only happen on struct that are entirely
function pointers.

See:
https://git.kernel.org/linus/313dd1b629219db50cad532dba6a3b3b22ffe622

And:
https://git.kernel.org/pub/scm/linux/kernel/git/kees/linux.git/commit/?id=914e2dfc61195a95868ae5c750690a7f1c87bc66

If you have any structures that are shared externally from the kernel,
I can mark them with __no_randomize_layout.

-Kees
Kees Cook July 28, 2017, 5:15 p.m. UTC | #4
On Thu, Jul 27, 2017 at 6:43 PM, Alex Deucher <alexdeucher@gmail.com> wrote:
> On Tue, Jul 25, 2017 at 5:47 PM, Kees Cook <keescook@chromium.org> wrote:
>> As done for vega10 in commit 3ddd396f6b57 ("drm/amd/powerplay: Use
>> designated initializers") mark other tableFunction entries with designated
>> initializers. The randstruct plugin requires designated initializers for
>> structures that are entirely function pointers.
>>
>> Cc: Rex Zhu <Rex.Zhu@amd.com>
>> Cc: Hawking Zhang <Hawking.Zhang@amd.com>
>> Cc: Alex Deucher <alexander.deucher@amd.com>
>> Signed-off-by: Kees Cook <keescook@chromium.org>
>> ---
>> If I can get an Ack for this, I'll carry it in the gcc-plugins tree, unless
>> you think this is worth landing for v4.13, in which case, please take it
>> now. :)
>>
>
> Acked-by: Alex Deucher <alexander.deucher@amd.com>
>
> I'm happy to take this through my tree if that is ok with you.

Since the randstruct patch depends on this fix, it's likely best to go
through my tree unless you can get this into v4.13. (Since then when
the randstruct patch lands in v4.14, it'll already be there.) I'm fine
either way.

Thanks!

-Kees
Alex Deucher July 28, 2017, 5:26 p.m. UTC | #5
> -----Original Message-----

> From: keescook@google.com [mailto:keescook@google.com] On Behalf Of

> Kees Cook

> Sent: Friday, July 28, 2017 1:16 PM

> To: Alex Deucher

> Cc: LKML; David Airlie; amd-gfx list; Maling list - DRI developers; Deucher,

> Alexander; Zhu, Rex; Koenig, Christian; Zhang, Hawking

> Subject: Re: [PATCH] drm/amd/powerplay: rv: Use designated initializers

> 

> On Thu, Jul 27, 2017 at 6:43 PM, Alex Deucher <alexdeucher@gmail.com>

> wrote:

> > On Tue, Jul 25, 2017 at 5:47 PM, Kees Cook <keescook@chromium.org>

> wrote:

> >> As done for vega10 in commit 3ddd396f6b57 ("drm/amd/powerplay: Use

> >> designated initializers") mark other tableFunction entries with designated

> >> initializers. The randstruct plugin requires designated initializers for

> >> structures that are entirely function pointers.

> >>

> >> Cc: Rex Zhu <Rex.Zhu@amd.com>

> >> Cc: Hawking Zhang <Hawking.Zhang@amd.com>

> >> Cc: Alex Deucher <alexander.deucher@amd.com>

> >> Signed-off-by: Kees Cook <keescook@chromium.org>

> >> ---

> >> If I can get an Ack for this, I'll carry it in the gcc-plugins tree, unless

> >> you think this is worth landing for v4.13, in which case, please take it

> >> now. :)

> >>

> >

> > Acked-by: Alex Deucher <alexander.deucher@amd.com>

> >

> > I'm happy to take this through my tree if that is ok with you.

> 

> Since the randstruct patch depends on this fix, it's likely best to go

> through my tree unless you can get this into v4.13. (Since then when

> the randstruct patch lands in v4.14, it'll already be there.) I'm fine

> either way.


Go ahead and take it through your tree.  Thanks!

Alex

> 

> Thanks!

> 

> -Kees

> 

> --

> Kees Cook

> Pixel Security
diff mbox

Patch

diff --git a/drivers/gpu/drm/amd/powerplay/hwmgr/rv_hwmgr.c b/drivers/gpu/drm/amd/powerplay/hwmgr/rv_hwmgr.c
index 4c7f430b36eb..8e6cfd89c7e0 100644
--- a/drivers/gpu/drm/amd/powerplay/hwmgr/rv_hwmgr.c
+++ b/drivers/gpu/drm/amd/powerplay/hwmgr/rv_hwmgr.c
@@ -308,8 +308,8 @@  static int rv_tf_set_num_active_display(struct pp_hwmgr *hwmgr, void *input,
 }
 
 static const struct phm_master_table_item rv_set_power_state_list[] = {
-	{ NULL, rv_tf_set_clock_limit },
-	{ NULL, rv_tf_set_num_active_display },
+	{ .tableFunction = rv_tf_set_clock_limit },
+	{ .tableFunction = rv_tf_set_num_active_display },
 	{ }
 };
 
@@ -382,7 +382,7 @@  static int rv_tf_disable_gfx_off(struct pp_hwmgr *hwmgr,
 }
 
 static const struct phm_master_table_item rv_disable_dpm_list[] = {
-	{NULL, rv_tf_disable_gfx_off},
+	{ .tableFunction = rv_tf_disable_gfx_off },
 	{ },
 };
 
@@ -407,7 +407,7 @@  static int rv_tf_enable_gfx_off(struct pp_hwmgr *hwmgr,
 }
 
 static const struct phm_master_table_item rv_enable_dpm_list[] = {
-	{NULL, rv_tf_enable_gfx_off},
+	{ .tableFunction = rv_tf_enable_gfx_off },
 	{ },
 };