Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit e3c4abdb authored by Mark Yao's avatar Mark Yao
Browse files

drm/rockchip: fix wrong pitch/size using on gem



args->pitch and args->size may not be set by userspace, sometimes
userspace only malloc args and not memset args to zero, then
args->pitch and args->size is random, it is very danger to use
pitch/size on gem.

pitch's type is u32, and min_pitch's type is int, example,
pitch is 0xffffffff, then pitch < min_pitch return true, then gem will
alloc very very big bufffer, it would eat all the memory and cause kernel
crash.

Stop using pitch/size from args, calc them from other args.

Signed-off-by: default avatarMark Yao <mark.yao@rock-chips.com>
parent c9ad1d99
Loading
Loading
Loading
Loading
+2 −7
Original line number Diff line number Diff line
@@ -234,12 +234,7 @@ int rockchip_gem_dumb_create(struct drm_file *file_priv,
	/*
	 * align to 64 bytes since Mali requires it.
	 */
	min_pitch = ALIGN(min_pitch, 64);

	if (args->pitch < min_pitch)
		args->pitch = min_pitch;

	if (args->size < args->pitch * args->height)
	args->pitch = ALIGN(min_pitch, 64);
	args->size = args->pitch * args->height;

	rk_obj = rockchip_gem_create_with_handle(file_priv, dev, args->size,