[PATCH 1/1] UBUNTU: SAUCE: (no-up) Modularize vesafb -- fix initialisation

Andy Whitcroft apw at canonical.com
Thu Jul 29 08:42:21 UTC 2010


When this patch was rolled forward, likely between Dapper and Hardy
a chunk of initialisation was lost.  Pull this back in so we actually
have an vesafb_info structure initialised.  Else we may well panic when
we rmmod vesafb.

Signed-off-by: Andy Whitcroft <apw at canonical.com>
---
 drivers/video/vesafb.c |   14 +++++++-------
 1 files changed, 7 insertions(+), 7 deletions(-)

diff --git a/drivers/video/vesafb.c b/drivers/video/vesafb.c
index 5a95b55..7137226 100644
--- a/drivers/video/vesafb.c
+++ b/drivers/video/vesafb.c
@@ -257,6 +257,7 @@ static int __init vesafb_setup(char *options)
 static int __init vesafb_probe(struct platform_device *dev)
 {
 	struct fb_info *info;
+	struct vesafb_info *vfb_info;
 	int i, err;
 	unsigned int size_vmode;
 	unsigned int size_remap;
@@ -315,13 +316,14 @@ static int __init vesafb_probe(struct platform_device *dev)
 		   spaces our resource handlers simply don't know about */
 	}
 
-	info = framebuffer_alloc(sizeof(u32) * 256, &dev->dev);
+	info = framebuffer_alloc(sizeof(struct vesafb_info), &dev->dev);
 	if (!info) {
 		release_mem_region(vesafb_fix.smem_start, size_total);
 		return -ENOMEM;
 	}
-	info->pseudo_palette = info->par;
-	info->par = NULL;
+	vfb_info = (struct vesafb_info *) info->par;
+	vfb_info->mtrr_hdl = -1;
+	info->pseudo_palette = vfb_info->pseudo_palette;
 
 	/* set vesafb aperture size for generic probing */
 	info->apertures = alloc_apertures(1);
@@ -464,18 +466,16 @@ static int __init vesafb_probe(struct platform_device *dev)
 		}
 
 		if (type) {
-			int rc;
-
 			/* Find the largest power-of-two */
 			while (temp_size & (temp_size - 1))
 				temp_size &= (temp_size - 1);
 
 			/* Try and find a power of two to add */
 			do {
-				rc = mtrr_add(vesafb_fix.smem_start, temp_size,
+				vfb_info->mtrr_hdl = mtrr_add(vesafb_fix.smem_start, temp_size,
 					      type, 1);
 				temp_size >>= 1;
-			} while (temp_size >= PAGE_SIZE && rc == -EINVAL);
+			} while (temp_size >= PAGE_SIZE && vfb_info->mtrr_hdl == -EINVAL);
 		}
 	}
 #endif
-- 
1.7.0.4





More information about the kernel-team mailing list