diff options
author | Pawel Osciak <p.osciak@samsung.com> | 2009-07-29 18:02:10 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2009-07-29 22:10:34 -0400 |
commit | c42b110caeb128819104d057acdaa1ae564b7c8d (patch) | |
tree | 061a26895c4072382e6175d0c3fd620b392bd22d /drivers | |
parent | 3d768213a6c34a27fac1804143da8cf18b8b175f (diff) |
s3c-fb: fix off-by-one bug in loop indexes
Fixed off-by-one bug in loop indexes - some elements beyond windows' array
were accessed, which might result in memory access violations when
removing/suspending the device.
Signed-off-by: Pawel Osciak <p.osciak@samsung.com>
Reviewed-by: Kyungmin Park <kyungmin.park@samsung.com>
Signed-off-by: Marek Szyprowski <m.szyprowski@samsung.com>
Cc: Krzysztof Helt <krzysztof.h1@poczta.fm>
Cc: Ben Dooks <ben-linux@fluff.org>
Cc: Russell King <rmk@arm.linux.org.uk>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Diffstat (limited to 'drivers')
-rw-r--r-- | drivers/video/s3c-fb.c | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/drivers/video/s3c-fb.c b/drivers/video/s3c-fb.c index bb63c07e13de..5a72083dc67c 100644 --- a/drivers/video/s3c-fb.c +++ b/drivers/video/s3c-fb.c | |||
@@ -964,7 +964,7 @@ static int __devexit s3c_fb_remove(struct platform_device *pdev) | |||
964 | struct s3c_fb *sfb = platform_get_drvdata(pdev); | 964 | struct s3c_fb *sfb = platform_get_drvdata(pdev); |
965 | int win; | 965 | int win; |
966 | 966 | ||
967 | for (win = 0; win <= S3C_FB_MAX_WIN; win++) | 967 | for (win = 0; win < S3C_FB_MAX_WIN; win++) |
968 | if (sfb->windows[win]) | 968 | if (sfb->windows[win]) |
969 | s3c_fb_release_win(sfb, sfb->windows[win]); | 969 | s3c_fb_release_win(sfb, sfb->windows[win]); |
970 | 970 | ||
@@ -988,7 +988,7 @@ static int s3c_fb_suspend(struct platform_device *pdev, pm_message_t state) | |||
988 | struct s3c_fb_win *win; | 988 | struct s3c_fb_win *win; |
989 | int win_no; | 989 | int win_no; |
990 | 990 | ||
991 | for (win_no = S3C_FB_MAX_WIN; win_no >= 0; win_no--) { | 991 | for (win_no = S3C_FB_MAX_WIN - 1; win_no >= 0; win_no--) { |
992 | win = sfb->windows[win_no]; | 992 | win = sfb->windows[win_no]; |
993 | if (!win) | 993 | if (!win) |
994 | continue; | 994 | continue; |