diff options
| author | Yang Zi <2959243019@qq.com> | 2026-08-25 16:58:15 +0800 |
|---|---|---|
| committer | Helge Deller <deller@gmx.de> | 2026-09-10 21:57:59 +0200 |
| commit | 3fb13d29cf8eb4502837bff06b2873c5435f6ffd (patch) | |
| tree | abb290ff8745a32d8cb04d433f4d1488556b4358 | |
| parent | 94e6a058b16820e02f25e1221a4c4e713ba23550 (diff) | |
| download | linux-3fb13d29cf8eb4502837bff06b2873c5435f6ffd.tar.gz linux-3fb13d29cf8eb4502837bff06b2873c5435f6ffd.zip | |
fbdev: ssd1307fb: fix NULL pointer dereference on missing match data
device_get_match_data() can return NULL, e.g. when the device is matched
through the I2C device ID table rather than the OF match table. The
returned value is stored in par->device_info and later dereferenced when
initializing par->vcomh, causing a NULL pointer dereference.
Check the return value right after the assignment and bail out with
-ENODEV (releasing the already allocated framebuffer) before any
dereference.
Signed-off-by: Yang Zi <2959243019@qq.com>
Signed-off-by: Helge Deller <deller@gmx.de>
| -rw-r--r-- | drivers/video/fbdev/ssd1307fb.c | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/drivers/video/fbdev/ssd1307fb.c b/drivers/video/fbdev/ssd1307fb.c index c4fdecafd856..4d185c754284 100644 --- a/drivers/video/fbdev/ssd1307fb.c +++ b/drivers/video/fbdev/ssd1307fb.c @@ -665,6 +665,10 @@ static int ssd1307fb_probe(struct i2c_client *client) spin_lock_init(&par->damage_lock); par->device_info = device_get_match_data(dev); + if (!par->device_info) { + ret = -ENODEV; + goto fb_alloc_error; + } par->reset = devm_gpiod_get_optional(dev, "reset", GPIOD_OUT_LOW); if (IS_ERR(par->reset)) { |
