All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH] drm/nouveau: Fix potential memory access error in nouveau_debugfs_pstate_get()
@ 2018-07-31  1:03 Lyude Paul
  2018-08-01  9:13   ` kbuild test robot
  0 siblings, 1 reply; 3+ messages in thread
From: Lyude Paul @ 2018-07-31  1:03 UTC (permalink / raw)
  To: nouveau; +Cc: Karol Herbst, Ben Skeggs, David Airlie, dri-devel, linux-kernel

nouveau_debugfs(drm) will never be NULL, because we're taking the value
of the potentially null device pointer and adding to it so it isn't 0x0.
So, check if drm is NULL instead.

Signed-off-by: Lyude Paul <lyude@redhat.com>
Cc: Karol Herbst <karolherbst@gmail.com>
---
 drivers/gpu/drm/nouveau/nouveau_debugfs.c | 5 +++--
 1 file changed, 3 insertions(+), 2 deletions(-)

diff --git a/drivers/gpu/drm/nouveau/nouveau_debugfs.c b/drivers/gpu/drm/nouveau/nouveau_debugfs.c
index 963a4dba8213..d83313c02913 100644
--- a/drivers/gpu/drm/nouveau/nouveau_debugfs.c
+++ b/drivers/gpu/drm/nouveau/nouveau_debugfs.c
@@ -50,13 +50,14 @@ static int
 nouveau_debugfs_pstate_get(struct seq_file *m, void *data)
 {
 	struct drm_device *drm = m->private;
-	struct nouveau_debugfs *debugfs = nouveau_debugfs(drm);
+	struct nouveau_debugfs *debugfs;
 	struct nvif_object *ctrl = &debugfs->ctrl;
 	struct nvif_control_pstate_info_v0 info = {};
 	int ret, i;
 
-	if (!debugfs)
+	if (!drm)
 		return -ENODEV;
+	debugfs = nouveau_debugfs(drm);
 
 	ret = nvif_mthd(ctrl, NVIF_CONTROL_PSTATE_INFO, &info, sizeof(info));
 	if (ret)
-- 
2.17.1


^ permalink raw reply related	[flat|nested] 3+ messages in thread

* Re: [PATCH] drm/nouveau: Fix potential memory access error in nouveau_debugfs_pstate_get()
@ 2018-08-01  9:13   ` kbuild test robot
  0 siblings, 0 replies; 3+ messages in thread
From: kbuild test robot @ 2018-08-01  9:13 UTC (permalink / raw)
  To: Lyude Paul
  Cc: kbuild-all, nouveau, David Airlie, linux-kernel, Karol Herbst,
	dri-devel, Ben Skeggs

[-- Attachment #1: Type: text/plain, Size: 5918 bytes --]

Hi Lyude,

Thank you for the patch! Perhaps something to improve:

[auto build test WARNING on linus/master]
[also build test WARNING on v4.18-rc7 next-20180731]
[if your patch is applied to the wrong git tree, please drop us a note to help improve the system]

url:    https://github.com/0day-ci/linux/commits/Lyude-Paul/drm-nouveau-Fix-potential-memory-access-error-in-nouveau_debugfs_pstate_get/20180801-155246
config: i386-randconfig-a1-201830 (attached as .config)
compiler: gcc-4.9 (Debian 4.9.4-2) 4.9.4
reproduce:
        # save the attached .config to linux build tree
        make ARCH=i386 

All warnings (new ones prefixed by >>):

   drivers/gpu//drm/nouveau/nouveau_debugfs.c: In function 'nouveau_debugfs_pstate_get':
>> drivers/gpu//drm/nouveau/nouveau_debugfs.c:54:22: warning: 'debugfs' is used uninitialized in this function [-Wuninitialized]
     struct nvif_object *ctrl = &debugfs->ctrl;
                         ^

vim +/debugfs +54 drivers/gpu//drm/nouveau/nouveau_debugfs.c

33b903e8 Marcin Slusarz 2013-02-08   48  
6e9fc177 Karol Herbst   2015-07-30   49  static int
6e9fc177 Karol Herbst   2015-07-30   50  nouveau_debugfs_pstate_get(struct seq_file *m, void *data)
6e9fc177 Karol Herbst   2015-07-30   51  {
1a54082a Noralf Trønnes 2017-01-26   52  	struct drm_device *drm = m->private;
11a2501e Lyude Paul     2018-07-30   53  	struct nouveau_debugfs *debugfs;
6e9fc177 Karol Herbst   2015-07-30  @54  	struct nvif_object *ctrl = &debugfs->ctrl;
6e9fc177 Karol Herbst   2015-07-30   55  	struct nvif_control_pstate_info_v0 info = {};
6e9fc177 Karol Herbst   2015-07-30   56  	int ret, i;
6e9fc177 Karol Herbst   2015-07-30   57  
11a2501e Lyude Paul     2018-07-30   58  	if (!drm)
6e9fc177 Karol Herbst   2015-07-30   59  		return -ENODEV;
11a2501e Lyude Paul     2018-07-30   60  	debugfs = nouveau_debugfs(drm);
6e9fc177 Karol Herbst   2015-07-30   61  
6e9fc177 Karol Herbst   2015-07-30   62  	ret = nvif_mthd(ctrl, NVIF_CONTROL_PSTATE_INFO, &info, sizeof(info));
6e9fc177 Karol Herbst   2015-07-30   63  	if (ret)
6e9fc177 Karol Herbst   2015-07-30   64  		return ret;
6e9fc177 Karol Herbst   2015-07-30   65  
6e9fc177 Karol Herbst   2015-07-30   66  	for (i = 0; i < info.count + 1; i++) {
6e9fc177 Karol Herbst   2015-07-30   67  		const s32 state = i < info.count ? i :
6e9fc177 Karol Herbst   2015-07-30   68  			NVIF_CONTROL_PSTATE_ATTR_V0_STATE_CURRENT;
6e9fc177 Karol Herbst   2015-07-30   69  		struct nvif_control_pstate_attr_v0 attr = {
6e9fc177 Karol Herbst   2015-07-30   70  			.state = state,
6e9fc177 Karol Herbst   2015-07-30   71  			.index = 0,
6e9fc177 Karol Herbst   2015-07-30   72  		};
6e9fc177 Karol Herbst   2015-07-30   73  
6e9fc177 Karol Herbst   2015-07-30   74  		ret = nvif_mthd(ctrl, NVIF_CONTROL_PSTATE_ATTR,
6e9fc177 Karol Herbst   2015-07-30   75  				&attr, sizeof(attr));
6e9fc177 Karol Herbst   2015-07-30   76  		if (ret)
6e9fc177 Karol Herbst   2015-07-30   77  			return ret;
6e9fc177 Karol Herbst   2015-07-30   78  
6e9fc177 Karol Herbst   2015-07-30   79  		if (i < info.count)
6e9fc177 Karol Herbst   2015-07-30   80  			seq_printf(m, "%02x:", attr.state);
6e9fc177 Karol Herbst   2015-07-30   81  		else
6e9fc177 Karol Herbst   2015-07-30   82  			seq_printf(m, "%s:", info.pwrsrc == 0 ? "DC" :
6e9fc177 Karol Herbst   2015-07-30   83  					     info.pwrsrc == 1 ? "AC" : "--");
6e9fc177 Karol Herbst   2015-07-30   84  
6e9fc177 Karol Herbst   2015-07-30   85  		attr.index = 0;
6e9fc177 Karol Herbst   2015-07-30   86  		do {
6e9fc177 Karol Herbst   2015-07-30   87  			attr.state = state;
6e9fc177 Karol Herbst   2015-07-30   88  			ret = nvif_mthd(ctrl, NVIF_CONTROL_PSTATE_ATTR,
6e9fc177 Karol Herbst   2015-07-30   89  					&attr, sizeof(attr));
6e9fc177 Karol Herbst   2015-07-30   90  			if (ret)
6e9fc177 Karol Herbst   2015-07-30   91  				return ret;
6e9fc177 Karol Herbst   2015-07-30   92  
6e9fc177 Karol Herbst   2015-07-30   93  			seq_printf(m, " %s %d", attr.name, attr.min);
6e9fc177 Karol Herbst   2015-07-30   94  			if (attr.min != attr.max)
6e9fc177 Karol Herbst   2015-07-30   95  				seq_printf(m, "-%d", attr.max);
6e9fc177 Karol Herbst   2015-07-30   96  			seq_printf(m, " %s", attr.unit);
6e9fc177 Karol Herbst   2015-07-30   97  		} while (attr.index);
6e9fc177 Karol Herbst   2015-07-30   98  
6e9fc177 Karol Herbst   2015-07-30   99  		if (state >= 0) {
6e9fc177 Karol Herbst   2015-07-30  100  			if (info.ustate_ac == state)
6e9fc177 Karol Herbst   2015-07-30  101  				seq_printf(m, " AC");
6e9fc177 Karol Herbst   2015-07-30  102  			if (info.ustate_dc == state)
6e9fc177 Karol Herbst   2015-07-30  103  				seq_printf(m, " DC");
6e9fc177 Karol Herbst   2015-07-30  104  			if (info.pstate == state)
6e9fc177 Karol Herbst   2015-07-30  105  				seq_printf(m, " *");
6e9fc177 Karol Herbst   2015-07-30  106  		} else {
6e9fc177 Karol Herbst   2015-07-30  107  			if (info.ustate_ac < -1)
6e9fc177 Karol Herbst   2015-07-30  108  				seq_printf(m, " AC");
6e9fc177 Karol Herbst   2015-07-30  109  			if (info.ustate_dc < -1)
6e9fc177 Karol Herbst   2015-07-30  110  				seq_printf(m, " DC");
6e9fc177 Karol Herbst   2015-07-30  111  		}
6e9fc177 Karol Herbst   2015-07-30  112  
6e9fc177 Karol Herbst   2015-07-30  113  		seq_printf(m, "\n");
6e9fc177 Karol Herbst   2015-07-30  114  	}
6e9fc177 Karol Herbst   2015-07-30  115  
6e9fc177 Karol Herbst   2015-07-30  116  	return 0;
6e9fc177 Karol Herbst   2015-07-30  117  }
6e9fc177 Karol Herbst   2015-07-30  118  

:::::: The code at line 54 was first introduced by commit
:::::: 6e9fc177399f08446293fec7607913fdbc95e191 drm/nouveau/debugfs: add copy of sysfs pstate interface ported to debugfs

:::::: TO: Karol Herbst <nouveau@karolherbst.de>
:::::: CC: Ben Skeggs <bskeggs@redhat.com>

---
0-DAY kernel test infrastructure                Open Source Technology Center
https://lists.01.org/pipermail/kbuild-all                   Intel Corporation

[-- Attachment #2: .config.gz --]
[-- Type: application/gzip, Size: 29403 bytes --]

^ permalink raw reply	[flat|nested] 3+ messages in thread

* Re: [PATCH] drm/nouveau: Fix potential memory access error in nouveau_debugfs_pstate_get()
@ 2018-08-01  9:13   ` kbuild test robot
  0 siblings, 0 replies; 3+ messages in thread
From: kbuild test robot @ 2018-08-01  9:13 UTC (permalink / raw)
  To: Lyude Paul
  Cc: David Airlie, nouveau-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW,
	dri-devel-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW,
	linux-kernel-u79uwXL29TY76Z2rM5mHXA, kbuild-all-JC7UmRfGjtg,
	Ben Skeggs

[-- Attachment #1: Type: text/plain, Size: 5972 bytes --]

Hi Lyude,

Thank you for the patch! Perhaps something to improve:

[auto build test WARNING on linus/master]
[also build test WARNING on v4.18-rc7 next-20180731]
[if your patch is applied to the wrong git tree, please drop us a note to help improve the system]

url:    https://github.com/0day-ci/linux/commits/Lyude-Paul/drm-nouveau-Fix-potential-memory-access-error-in-nouveau_debugfs_pstate_get/20180801-155246
config: i386-randconfig-a1-201830 (attached as .config)
compiler: gcc-4.9 (Debian 4.9.4-2) 4.9.4
reproduce:
        # save the attached .config to linux build tree
        make ARCH=i386 

All warnings (new ones prefixed by >>):

   drivers/gpu//drm/nouveau/nouveau_debugfs.c: In function 'nouveau_debugfs_pstate_get':
>> drivers/gpu//drm/nouveau/nouveau_debugfs.c:54:22: warning: 'debugfs' is used uninitialized in this function [-Wuninitialized]
     struct nvif_object *ctrl = &debugfs->ctrl;
                         ^

vim +/debugfs +54 drivers/gpu//drm/nouveau/nouveau_debugfs.c

33b903e8 Marcin Slusarz 2013-02-08   48  
6e9fc177 Karol Herbst   2015-07-30   49  static int
6e9fc177 Karol Herbst   2015-07-30   50  nouveau_debugfs_pstate_get(struct seq_file *m, void *data)
6e9fc177 Karol Herbst   2015-07-30   51  {
1a54082a Noralf Trønnes 2017-01-26   52  	struct drm_device *drm = m->private;
11a2501e Lyude Paul     2018-07-30   53  	struct nouveau_debugfs *debugfs;
6e9fc177 Karol Herbst   2015-07-30  @54  	struct nvif_object *ctrl = &debugfs->ctrl;
6e9fc177 Karol Herbst   2015-07-30   55  	struct nvif_control_pstate_info_v0 info = {};
6e9fc177 Karol Herbst   2015-07-30   56  	int ret, i;
6e9fc177 Karol Herbst   2015-07-30   57  
11a2501e Lyude Paul     2018-07-30   58  	if (!drm)
6e9fc177 Karol Herbst   2015-07-30   59  		return -ENODEV;
11a2501e Lyude Paul     2018-07-30   60  	debugfs = nouveau_debugfs(drm);
6e9fc177 Karol Herbst   2015-07-30   61  
6e9fc177 Karol Herbst   2015-07-30   62  	ret = nvif_mthd(ctrl, NVIF_CONTROL_PSTATE_INFO, &info, sizeof(info));
6e9fc177 Karol Herbst   2015-07-30   63  	if (ret)
6e9fc177 Karol Herbst   2015-07-30   64  		return ret;
6e9fc177 Karol Herbst   2015-07-30   65  
6e9fc177 Karol Herbst   2015-07-30   66  	for (i = 0; i < info.count + 1; i++) {
6e9fc177 Karol Herbst   2015-07-30   67  		const s32 state = i < info.count ? i :
6e9fc177 Karol Herbst   2015-07-30   68  			NVIF_CONTROL_PSTATE_ATTR_V0_STATE_CURRENT;
6e9fc177 Karol Herbst   2015-07-30   69  		struct nvif_control_pstate_attr_v0 attr = {
6e9fc177 Karol Herbst   2015-07-30   70  			.state = state,
6e9fc177 Karol Herbst   2015-07-30   71  			.index = 0,
6e9fc177 Karol Herbst   2015-07-30   72  		};
6e9fc177 Karol Herbst   2015-07-30   73  
6e9fc177 Karol Herbst   2015-07-30   74  		ret = nvif_mthd(ctrl, NVIF_CONTROL_PSTATE_ATTR,
6e9fc177 Karol Herbst   2015-07-30   75  				&attr, sizeof(attr));
6e9fc177 Karol Herbst   2015-07-30   76  		if (ret)
6e9fc177 Karol Herbst   2015-07-30   77  			return ret;
6e9fc177 Karol Herbst   2015-07-30   78  
6e9fc177 Karol Herbst   2015-07-30   79  		if (i < info.count)
6e9fc177 Karol Herbst   2015-07-30   80  			seq_printf(m, "%02x:", attr.state);
6e9fc177 Karol Herbst   2015-07-30   81  		else
6e9fc177 Karol Herbst   2015-07-30   82  			seq_printf(m, "%s:", info.pwrsrc == 0 ? "DC" :
6e9fc177 Karol Herbst   2015-07-30   83  					     info.pwrsrc == 1 ? "AC" : "--");
6e9fc177 Karol Herbst   2015-07-30   84  
6e9fc177 Karol Herbst   2015-07-30   85  		attr.index = 0;
6e9fc177 Karol Herbst   2015-07-30   86  		do {
6e9fc177 Karol Herbst   2015-07-30   87  			attr.state = state;
6e9fc177 Karol Herbst   2015-07-30   88  			ret = nvif_mthd(ctrl, NVIF_CONTROL_PSTATE_ATTR,
6e9fc177 Karol Herbst   2015-07-30   89  					&attr, sizeof(attr));
6e9fc177 Karol Herbst   2015-07-30   90  			if (ret)
6e9fc177 Karol Herbst   2015-07-30   91  				return ret;
6e9fc177 Karol Herbst   2015-07-30   92  
6e9fc177 Karol Herbst   2015-07-30   93  			seq_printf(m, " %s %d", attr.name, attr.min);
6e9fc177 Karol Herbst   2015-07-30   94  			if (attr.min != attr.max)
6e9fc177 Karol Herbst   2015-07-30   95  				seq_printf(m, "-%d", attr.max);
6e9fc177 Karol Herbst   2015-07-30   96  			seq_printf(m, " %s", attr.unit);
6e9fc177 Karol Herbst   2015-07-30   97  		} while (attr.index);
6e9fc177 Karol Herbst   2015-07-30   98  
6e9fc177 Karol Herbst   2015-07-30   99  		if (state >= 0) {
6e9fc177 Karol Herbst   2015-07-30  100  			if (info.ustate_ac == state)
6e9fc177 Karol Herbst   2015-07-30  101  				seq_printf(m, " AC");
6e9fc177 Karol Herbst   2015-07-30  102  			if (info.ustate_dc == state)
6e9fc177 Karol Herbst   2015-07-30  103  				seq_printf(m, " DC");
6e9fc177 Karol Herbst   2015-07-30  104  			if (info.pstate == state)
6e9fc177 Karol Herbst   2015-07-30  105  				seq_printf(m, " *");
6e9fc177 Karol Herbst   2015-07-30  106  		} else {
6e9fc177 Karol Herbst   2015-07-30  107  			if (info.ustate_ac < -1)
6e9fc177 Karol Herbst   2015-07-30  108  				seq_printf(m, " AC");
6e9fc177 Karol Herbst   2015-07-30  109  			if (info.ustate_dc < -1)
6e9fc177 Karol Herbst   2015-07-30  110  				seq_printf(m, " DC");
6e9fc177 Karol Herbst   2015-07-30  111  		}
6e9fc177 Karol Herbst   2015-07-30  112  
6e9fc177 Karol Herbst   2015-07-30  113  		seq_printf(m, "\n");
6e9fc177 Karol Herbst   2015-07-30  114  	}
6e9fc177 Karol Herbst   2015-07-30  115  
6e9fc177 Karol Herbst   2015-07-30  116  	return 0;
6e9fc177 Karol Herbst   2015-07-30  117  }
6e9fc177 Karol Herbst   2015-07-30  118  

:::::: The code at line 54 was first introduced by commit
:::::: 6e9fc177399f08446293fec7607913fdbc95e191 drm/nouveau/debugfs: add copy of sysfs pstate interface ported to debugfs

:::::: TO: Karol Herbst <nouveau-lIBOoy2+GI7scQ4cX5LuPg@public.gmane.org>
:::::: CC: Ben Skeggs <bskeggs-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>

---
0-DAY kernel test infrastructure                Open Source Technology Center
https://lists.01.org/pipermail/kbuild-all                   Intel Corporation

[-- Attachment #2: .config.gz --]
[-- Type: application/gzip, Size: 29403 bytes --]

[-- Attachment #3: Type: text/plain, Size: 154 bytes --]

_______________________________________________
Nouveau mailing list
Nouveau@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/nouveau

^ permalink raw reply	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2018-08-01  9:17 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2018-07-31  1:03 [PATCH] drm/nouveau: Fix potential memory access error in nouveau_debugfs_pstate_get() Lyude Paul
2018-08-01  9:13 ` kbuild test robot
2018-08-01  9:13   ` kbuild test robot

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.