Commit 97af1ce2 authored by Dhananjay Balan's avatar Dhananjay Balan Committed by Greg Kroah-Hartman
Browse files

drivers: staging: sm750: Hold lock irrespective of fb numbers.



Start holding the lock for all cases irrespective of number of fb,
there could be a deadlock since this number could change in the
lifetime of this lock

Signed-off-by: default avatarDhananjay Balan <mail@dbalan.in>
Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
parent 8a21ff77
Loading
Loading
Loading
Loading
+13 −13
Original line number Diff line number Diff line
@@ -185,8 +185,9 @@ static void lynxfb_ops_fillrect(struct fb_info *info,
	/*
	 * If not use spin_lock, system will die if user load driver
	 * and immediately unload driver frequently (dual)
	 * since they fb_count could change during the lifetime of
	 * this lock, we are holding it for all cases.
	 */
	if (sm750_dev->fb_count > 1)
	spin_lock(&sm750_dev->slock);

	sm750_dev->accel.de_fillrect(&sm750_dev->accel,
@@ -194,7 +195,6 @@ static void lynxfb_ops_fillrect(struct fb_info *info,
				     region->dx, region->dy,
				     region->width, region->height,
				     color, rop);
	if (sm750_dev->fb_count > 1)
	spin_unlock(&sm750_dev->slock);
}

@@ -219,8 +219,9 @@ static void lynxfb_ops_copyarea(struct fb_info *info,
	/*
	 * If not use spin_lock, system will die if user load driver
	 * and immediately unload driver frequently (dual)
	 * since they fb_count could change during the lifetime of
	 * this lock, we are holding it for all cases.
	 */
	if (sm750_dev->fb_count > 1)
	spin_lock(&sm750_dev->slock);

	sm750_dev->accel.de_copyarea(&sm750_dev->accel,
@@ -228,7 +229,6 @@ static void lynxfb_ops_copyarea(struct fb_info *info,
				     base, pitch, Bpp, region->dx, region->dy,
				     region->width, region->height,
				     HW_ROP2_COPY);
	if (sm750_dev->fb_count > 1)
	spin_unlock(&sm750_dev->slock);
}

@@ -268,8 +268,9 @@ static void lynxfb_ops_imageblit(struct fb_info *info,
	/*
	 * If not use spin_lock, system will die if user load driver
	 * and immediately unload driver frequently (dual)
	 * since they fb_count could change during the lifetime of
	 * this lock, we are holding it for all cases.
	 */
	if (sm750_dev->fb_count > 1)
	spin_lock(&sm750_dev->slock);

	sm750_dev->accel.de_imageblit(&sm750_dev->accel,
@@ -278,7 +279,6 @@ static void lynxfb_ops_imageblit(struct fb_info *info,
				      image->dx, image->dy,
				      image->width, image->height,
				      fgcol, bgcol, HW_ROP2_COPY);
	if (sm750_dev->fb_count > 1)
	spin_unlock(&sm750_dev->slock);
}