From b17f5290374c63ee74c25bd0b325fb7ae07c9a9b Mon Sep 17 00:00:00 2001 From: Mauro Carvalho Chehab Date: Sun, 14 Jan 2007 10:14:17 -0200 Subject: [PATCH] --- yaml --- r: 45511 b: refs/heads/master c: 35d6270b806562b37279d3970fa477aaeb372829 h: refs/heads/master i: 45509: 01e82f800f69c28a3899bbea543a2e9d3872b0dd 45507: 699c84a64bffa6cec185af8fdf3f9bcced958796 45503: 63a865e22bd620e10328c58cd8ef2184996d895d v: v3 --- [refs] | 2 +- trunk/drivers/media/video/vivi.c | 7 +++++++ 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/[refs] b/[refs] index 174e3dcd203a..95cb3eefafc0 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: c430ca1e16b2b4b30f567806c73e270caea8db1d +refs/heads/master: 35d6270b806562b37279d3970fa477aaeb372829 diff --git a/trunk/drivers/media/video/vivi.c b/trunk/drivers/media/video/vivi.c index bacb311b4f24..d4cf55666731 100644 --- a/trunk/drivers/media/video/vivi.c +++ b/trunk/drivers/media/video/vivi.c @@ -270,10 +270,15 @@ static void gen_line(struct sg_to_addr to_addr[],int inipos,int pages,int wmax, char *p,*s,*basep; struct page *pg; u8 chr,r,g,b,color; + unsigned long flags; + spinlock_t spinlock; + + spin_lock_init(&spinlock); /* Get first addr pointed to pixel position */ oldpg=get_addr_pos(pos,pages,to_addr); pg=pfn_to_page(sg_dma_address(to_addr[oldpg].sg) >> PAGE_SHIFT); + spin_lock_irqsave(&spinlock,flags); basep = kmap_atomic(pg, KM_BOUNCE_READ)+to_addr[oldpg].sg->offset; /* We will just duplicate the second pixel at the packet */ @@ -376,6 +381,8 @@ static void gen_line(struct sg_to_addr to_addr[],int inipos,int pages,int wmax, end: kunmap_atomic(basep, KM_BOUNCE_READ); + spin_unlock_irqrestore(&spinlock,flags); + } static void vivi_fillbuff(struct vivi_dev *dev,struct vivi_buffer *buf) {