kernel: guard vb2 queue before stream
This commit is contained in:
parent
ffc79982fc
commit
213673274d
@ -42,10 +42,26 @@
|
||||
+ video->uvc_num_requests, video->reqs_per_frame,
|
||||
+ video->queue.use_sg, video->queue.flags);
|
||||
+
|
||||
@@ -807,6 +820,15 @@
|
||||
video->is_enabled = true;
|
||||
|
||||
+ if (!video->queue.queue.lock || !video->queue.queue.ops ||
|
||||
+ !video->queue.queue.mem_ops) {
|
||||
+ uvcg_err(&video->uvc->func,
|
||||
+ "Video queue not ready: dev=%p lock=%p ops=%p mem_ops=%p buf_ops=%p drv_priv=%p type=%u io_modes=0x%x\n",
|
||||
+ video->queue.queue.dev, video->queue.queue.lock,
|
||||
+ video->queue.queue.ops, video->queue.queue.mem_ops,
|
||||
+ video->queue.queue.buf_ops, video->queue.queue.drv_priv,
|
||||
+ video->queue.queue.type, video->queue.queue.io_modes);
|
||||
+ return -EINVAL;
|
||||
+ }
|
||||
+
|
||||
if ((ret = uvcg_queue_enable(&video->queue, 1)) < 0)
|
||||
return ret;
|
||||
/*
|
||||
* Safe to access request related fields without req_lock because
|
||||
* this is the only thread currently active, and no other
|
||||
|
||||
|
||||
@@ -510,6 +532,19 @@
|
||||
if (req_size > max_req_size) {
|
||||
/* The prepared interval length and expected buffer size
|
||||
@ -55,7 +71,7 @@
|
||||
req_size = max_req_size;
|
||||
}
|
||||
video->req_size = req_size;
|
||||
|
||||
|
||||
if (!req_size || !video->max_payload_size || !video->imagesize || !nreq) {
|
||||
uvcg_info(&uvc->func,
|
||||
"Video prep requests: imagesize=%u interval=%u interval_dur=%u nreq=%u header=%u req_size=%u max_req=%u max_payload=%u ep_maxpacket=%u maxburst=%u mult=%u bInterval=%u speed=%u\n",
|
||||
@ -65,5 +81,5 @@
|
||||
video->ep->maxburst, video->ep->mult,
|
||||
video->ep->desc->bInterval, cdev->gadget->speed);
|
||||
}
|
||||
|
||||
|
||||
/* We need to compensate the amount of requests to be
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user