All of lore.kernel.org
 help / color / mirror / Atom feed
From: Rob Clark <robdclark@gmail.com>
To: linux-arm-msm@vger.kernel.org
Cc: Rob Clark <robdclark@chromium.org>,
	MyungJoo Ham <myungjoo.ham@samsung.com>,
	Kyungmin Park <kyungmin.park@samsung.com>,
	Chanwoo Choi <cw00.choi@samsung.com>,
	linux-pm@vger.kernel.org, linux-kernel@vger.kernel.org
Subject: [PATCH] PM / devfreq: try_then_request_governor should not return NULL
Date: Thu, 23 May 2019 14:58:45 -0700	[thread overview]
Message-ID: <20190523215853.16622-1-robdclark@gmail.com> (raw)

From: Rob Clark <robdclark@chromium.org>

The two spots it is called expect either an IS_ERR() or a valid pointer,
but not NULL.

Fixes this crash that I came across:

   Unable to handle kernel NULL pointer dereference at virtual address 0000000000000030
   Mem abort info:
     ESR = 0x96000005
     Exception class = DABT (current EL), IL = 32 bits
     SET = 0, FnV = 0
     EA = 0, S1PTW = 0
   Data abort info:
     ISV = 0, ISS = 0x00000005
     CM = 0, WnR = 0
   [0000000000000030] user address but active_mm is swapper
   Internal error: Oops: 96000005 [#1] PREEMPT SMP
   Modules linked in:
   Process kworker/2:1 (pid: 212, stack limit = 0x(____ptrval____))
   CPU: 2 PID: 212 Comm: kworker/2:1 Not tainted 5.1.0-43338-g460e6984675c-dirty #54
   Hardware name: Google Cheza (rev3+) (DT)
   Workqueue: events deferred_probe_work_func
   pstate: 00c00009 (nzcv daif +PAN +UAO)
   pc : devfreq_add_device+0x2e4/0x410
   lr : devfreq_add_device+0x2d4/0x410
   sp : ffffff8013d93740
   x29: ffffff8013d93790 x28: ffffffc0f54f8670
   x27: 0000000000000001 x26: 0000000000000007
   x25: ffffff80124abfd8 x24: 0000000000000000
   x23: ffffffc0fabc4048 x22: ffffffc0fabc4388
   x21: ffffffc0fabc4010 x20: ffffffc0fa243010
   x19: ffffffc0fabc4000 x18: 0000000091c3d373
   x17: 0000000000000400 x16: 000000000000001a
   x15: 000000019e06d400 x14: 0000000000000001
   x13: 0000000000000000 x12: 00000000000006b6
   x11: 0000000000000000 x10: 0000000000000000
   x9 : ffffffc0fa18ba00 x8 : 0000000000000000
   x7 : 0000000000000000 x6 : ffffff80127a3d9a
   x5 : ffffff8013d93550 x4 : 0000000000000000
   x3 : 0000000000000000 x2 : 0000000000000000
   x1 : 00000000000000fe x0 : 0000000000000000
   Call trace:
    devfreq_add_device+0x2e4/0x410
    devm_devfreq_add_device+0x64/0xac
    msm_gpu_init+0x320/0x5c0
    adreno_gpu_init+0x21c/0x274
    a6xx_gpu_init+0x68/0xf4
    adreno_bind+0x158/0x284
    component_bind_all+0x110/0x204
    msm_drm_bind+0x118/0x5b8
    try_to_bring_up_master+0x15c/0x19c
    component_master_add_with_match+0xb4/0xec
    msm_pdev_probe+0x1f0/0x27c
    platform_drv_probe+0x90/0xb0
    really_probe+0x120/0x298
    driver_probe_device+0x64/0xfc
    __device_attach_driver+0x8c/0xa4
    bus_for_each_drv+0x88/0xd0
    __device_attach+0xac/0x134
    device_initial_probe+0x20/0x2c
    bus_probe_device+0x34/0x90
    deferred_probe_work_func+0x74/0xac
    process_one_work+0x210/0x428
    worker_thread+0x278/0x3e4
    kthread+0x120/0x130
    ret_from_fork+0x10/0x18
   Code: aa0003f8 b13ffc1f 54000762 f901c278 (f9401b08)
   ---[ end trace a6ecc18ce5894375 ]---
   Kernel panic - not syncing: Fatal exception

Signed-off-by: Rob Clark <robdclark@chromium.org>
---
 drivers/devfreq/devfreq.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/devfreq/devfreq.c b/drivers/devfreq/devfreq.c
index 0ae3de76833b..d29f66f0e52a 100644
--- a/drivers/devfreq/devfreq.c
+++ b/drivers/devfreq/devfreq.c
@@ -254,7 +254,7 @@ static struct devfreq_governor *try_then_request_governor(const char *name)
 		/* Restore previous state before return */
 		mutex_lock(&devfreq_list_lock);
 		if (err)
-			return NULL;
+			return ERR_PTR(err);
 
 		governor = find_devfreq_governor(name);
 	}
-- 
2.20.1


             reply	other threads:[~2019-05-23 21:59 UTC|newest]

Thread overview: 4+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
     [not found] <CGME20190523215902epcas5p40e3aca0efb342c8d778529fef416c3fd@epcas5p4.samsung.com>
2019-05-23 21:58 ` Rob Clark [this message]
2019-05-24  7:15   ` [PATCH] PM / devfreq: try_then_request_governor should not return NULL Chanwoo Choi
2019-05-24 13:15     ` Rob Clark
2019-05-28  1:18       ` Chanwoo Choi

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20190523215853.16622-1-robdclark@gmail.com \
    --to=robdclark@gmail.com \
    --cc=cw00.choi@samsung.com \
    --cc=kyungmin.park@samsung.com \
    --cc=linux-arm-msm@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-pm@vger.kernel.org \
    --cc=myungjoo.ham@samsung.com \
    --cc=robdclark@chromium.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.