From: brandon@ifup.org
To: mchehab@infradead.org
Cc: video4linux-list@redhat.com, v4l-dvb-maintainer@linuxtv.org,
Brandon Philips <bphilips@suse.de>
Subject: [patch 9/9] videobuf-dma-sg.c: Avoid NULL dereference and add comment about backwards compatibility
Date: Fri, 28 Mar 2008 02:39:53 -0700 [thread overview]
Message-ID: <20080328094022.327990180@ifup.org> (raw)
In-Reply-To: 20080328093944.278994792@ifup.org
[-- Attachment #1: videobuf-dma-sg-comments-and-avoid-NULL-deref.patch --]
[-- Type: text/plain, Size: 1625 bytes --]
Signed-off-by: Brandon Philips <bphilips@suse.de>
---
linux/drivers/media/video/videobuf-dma-sg.c | 16 +++++++++++++++-
1 file changed, 15 insertions(+), 1 deletion(-)
Index: v4l-dvb/linux/drivers/media/video/videobuf-dma-sg.c
===================================================================
--- v4l-dvb.orig/linux/drivers/media/video/videobuf-dma-sg.c
+++ v4l-dvb/linux/drivers/media/video/videobuf-dma-sg.c
@@ -592,6 +592,14 @@ static int __videobuf_mmap_mapper(struct
goto done;
}
+ /* This function maintains backwards compatibility with V4L1 and will
+ * map more than one buffer if the vma length is equal to the combined
+ * size of multiple buffers than it will map them together. See
+ * VIDIOCGMBUF in the v4l spec
+ *
+ * TODO: Allow drivers to specify if they support this mode
+ */
+
/* look for first buffer to map */
for (first = 0; first < VIDEO_MAX_FRAME; first++) {
if (NULL == q->bufs[first])
@@ -636,10 +644,16 @@ static int __videobuf_mmap_mapper(struct
map = kmalloc(sizeof(struct videobuf_mapping),GFP_KERNEL);
if (NULL == map)
goto done;
- for (size = 0, i = first; i <= last; size += q->bufs[i++]->bsize) {
+
+ size = 0;
+ for (i = first; i <= last; i++) {
+ if (NULL == q->bufs[i])
+ continue;
q->bufs[i]->map = map;
q->bufs[i]->baddr = vma->vm_start + size;
+ size += q->bufs[i]->bsize;
}
+
map->count = 1;
map->start = vma->vm_start;
map->end = vma->vm_end;
--
--
video4linux-list mailing list
Unsubscribe mailto:video4linux-list-request@redhat.com?subject=unsubscribe
https://www.redhat.com/mailman/listinfo/video4linux-list
prev parent reply other threads:[~2008-03-28 9:39 UTC|newest]
Thread overview: 10+ messages / expand[flat|nested] mbox.gz Atom feed top
2008-03-28 9:39 [patch 0/9] videobuf fixes 2.6.25 brandon
2008-03-28 9:39 ` [patch 1/9] soc_camera: Introduce a spinlock for use with videobuf brandon
2008-03-28 9:39 ` [patch 2/9] videobuf: Require spinlocks for all videobuf users brandon
2008-03-28 9:39 ` [patch 3/9] videobuf: Wakeup queues after changing the state to ERROR brandon
2008-03-28 9:39 ` [patch 4/9] videobuf: Simplify videobuf_waiton logic and possibly avoid missed wakeup brandon
2008-03-28 9:39 ` [patch 5/9] videobuf-vmalloc.c: Remove buf_release from videobuf_vm_close brandon
2008-03-28 9:39 ` [patch 6/9] videobuf-vmalloc.c: Fix hack of postponing mmap on remap failure brandon
2008-03-28 9:39 ` [patch 7/9] vivi: Simplify the vivi driver and avoid deadlocks brandon
2008-03-28 9:39 ` [patch 8/9] videobuf: Avoid deadlock with QBUF and bring up to spec for empty queue brandon
2008-03-28 9:39 ` brandon [this message]
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20080328094022.327990180@ifup.org \
--to=brandon@ifup.org \
--cc=bphilips@suse.de \
--cc=mchehab@infradead.org \
--cc=v4l-dvb-maintainer@linuxtv.org \
--cc=video4linux-list@redhat.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.