Browse Source

drm/nouveau/clk: Fix potential NULL pointer access when there is no fb subdev

Signed-off-by: Karol Herbst <karolherbst@gmail.com>
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
Karol Herbst 9 years ago
parent
commit
cc90badd3c
1 changed files with 3 additions and 2 deletions
  1. 3 2
      drivers/gpu/drm/nouveau/nvkm/subdev/clk/base.c

+ 3 - 2
drivers/gpu/drm/nouveau/nvkm/subdev/clk/base.c

@@ -175,7 +175,7 @@ static int
 nvkm_pstate_prog(struct nvkm_clk *clk, int pstatei)
 nvkm_pstate_prog(struct nvkm_clk *clk, int pstatei)
 {
 {
 	struct nvkm_subdev *subdev = &clk->subdev;
 	struct nvkm_subdev *subdev = &clk->subdev;
-	struct nvkm_ram *ram = subdev->device->fb->ram;
+	struct nvkm_fb *fb = subdev->device->fb;
 	struct nvkm_pci *pci = subdev->device->pci;
 	struct nvkm_pci *pci = subdev->device->pci;
 	struct nvkm_pstate *pstate;
 	struct nvkm_pstate *pstate;
 	int ret, idx = 0;
 	int ret, idx = 0;
@@ -190,7 +190,8 @@ nvkm_pstate_prog(struct nvkm_clk *clk, int pstatei)
 
 
 	nvkm_pcie_set_link(pci, pstate->pcie_speed, pstate->pcie_width);
 	nvkm_pcie_set_link(pci, pstate->pcie_speed, pstate->pcie_width);
 
 
-	if (ram && ram->func->calc) {
+	if (fb && fb->ram && fb->ram->func->calc) {
+		struct nvkm_ram *ram = fb->ram;
 		int khz = pstate->base.domain[nv_clk_src_mem];
 		int khz = pstate->base.domain[nv_clk_src_mem];
 		do {
 		do {
 			ret = ram->func->calc(ram, khz);
 			ret = ram->func->calc(ram, khz);