diff mbox

amdgpu: fix NULL pointer dereference at tonga_check_states_equal

Message ID SN1PR12MB06722832D8B95CDE507169C9FBA40@SN1PR12MB0672.namprd12.prod.outlook.com (mailing list archive)
State New, archived
Headers show

Commit Message

Zhu, Rex Feb. 23, 2016, 2:21 a.m. UTC
Reviewed-by:  Rex Zhu <Rex.Zhu@amd.com>

Best Regards
Rex Zhu

-----Original Message-----
From: Bradley Pankow [mailto:btpankow@gmail.com] 
Sent: Tuesday, February 23, 2016 9:12 AM
To: Deucher, Alexander; Zhu, Rex; Zhou, Jammy
Cc: dri-devel@lists.freedesktop.org; linux-kernel@vger.kernel.org; Bradley Pankow
Subject: [PATCH] amdgpu: fix NULL pointer dereference at tonga_check_states_equal

The event_data passed from pem_fini was not cleared upon initialization.
This caused NULL checks to pass and cast_const_phw_tonga_power_state to attempt to dereference an invalid pointer. Clear the event_data in pem_init and pem_fini before calling pem_handle_event.

Signed-off-by: Bradley Pankow <btpankow@gmail.com>
---
 drivers/gpu/drm/amd/powerplay/eventmgr/eventmgr.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

 
 static void pem_fini(struct pp_eventmgr *eventmgr)  {
-	struct pem_event_data event_data;
+	struct pem_event_data event_data = { {0} };
 
 	pem_uninit_featureInfo(eventmgr);
 	pem_unregister_interrupts(eventmgr);
--
2.7.1

Comments

Alex Deucher Feb. 23, 2016, 5:50 p.m. UTC | #1
Applied.  thanks!

Alex

On Mon, Feb 22, 2016 at 9:21 PM, Zhu, Rex <Rex.Zhu@amd.com> wrote:
>
> Reviewed-by:  Rex Zhu <Rex.Zhu@amd.com>
>
> Best Regards
> Rex Zhu
>
> -----Original Message-----
> From: Bradley Pankow [mailto:btpankow@gmail.com]
> Sent: Tuesday, February 23, 2016 9:12 AM
> To: Deucher, Alexander; Zhu, Rex; Zhou, Jammy
> Cc: dri-devel@lists.freedesktop.org; linux-kernel@vger.kernel.org; Bradley Pankow
> Subject: [PATCH] amdgpu: fix NULL pointer dereference at tonga_check_states_equal
>
> The event_data passed from pem_fini was not cleared upon initialization.
> This caused NULL checks to pass and cast_const_phw_tonga_power_state to attempt to dereference an invalid pointer. Clear the event_data in pem_init and pem_fini before calling pem_handle_event.
>
> Signed-off-by: Bradley Pankow <btpankow@gmail.com>
> ---
>  drivers/gpu/drm/amd/powerplay/eventmgr/eventmgr.c | 4 ++--
>  1 file changed, 2 insertions(+), 2 deletions(-)
>
> diff --git a/drivers/gpu/drm/amd/powerplay/eventmgr/eventmgr.c b/drivers/gpu/drm/amd/powerplay/eventmgr/eventmgr.c
> index 52a3efc..46410e3 100644
> --- a/drivers/gpu/drm/amd/powerplay/eventmgr/eventmgr.c
> +++ b/drivers/gpu/drm/amd/powerplay/eventmgr/eventmgr.c
> @@ -31,7 +31,7 @@
>  static int pem_init(struct pp_eventmgr *eventmgr)  {
>         int result = 0;
> -       struct pem_event_data event_data;
> +       struct pem_event_data event_data = { {0} };
>
>         /* Initialize PowerPlay feature info */
>         pem_init_feature_info(eventmgr);
> @@ -52,7 +52,7 @@ static int pem_init(struct pp_eventmgr *eventmgr)
>
>  static void pem_fini(struct pp_eventmgr *eventmgr)  {
> -       struct pem_event_data event_data;
> +       struct pem_event_data event_data = { {0} };
>
>         pem_uninit_featureInfo(eventmgr);
>         pem_unregister_interrupts(eventmgr);
> --
> 2.7.1
>
> _______________________________________________
> dri-devel mailing list
> dri-devel@lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/dri-devel
diff mbox

Patch

diff --git a/drivers/gpu/drm/amd/powerplay/eventmgr/eventmgr.c b/drivers/gpu/drm/amd/powerplay/eventmgr/eventmgr.c
index 52a3efc..46410e3 100644
--- a/drivers/gpu/drm/amd/powerplay/eventmgr/eventmgr.c
+++ b/drivers/gpu/drm/amd/powerplay/eventmgr/eventmgr.c
@@ -31,7 +31,7 @@ 
 static int pem_init(struct pp_eventmgr *eventmgr)  {
 	int result = 0;
-	struct pem_event_data event_data;
+	struct pem_event_data event_data = { {0} };
 
 	/* Initialize PowerPlay feature info */
 	pem_init_feature_info(eventmgr);
@@ -52,7 +52,7 @@  static int pem_init(struct pp_eventmgr *eventmgr)