Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S937969AbdLSDll (ORCPT ); Mon, 18 Dec 2017 22:41:41 -0500 Received: from mailout4.samsung.com ([203.254.224.34]:43422 "EHLO mailout4.samsung.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S937351AbdLSDlg (ORCPT ); Mon, 18 Dec 2017 22:41:36 -0500 DKIM-Filter: OpenDKIM Filter v2.11.0 mailout4.samsung.com 20171219034134epoutp0460dd0b194974be64bd4825c71674198a~BlRtVR6FG2161821618epoutp04f X-AuditID: b6c32a4b-cf7ff700000011c1-ed-5a388a6de1a9 From: Satendra Singh Thakur To: linux-kernel@vger.kernel.org, linux-media@vger.kernel.org Cc: pawel@osciak.com, m.szyprowski@samsung.com, kyungmin.park@samsung.com, mchehab@kernel.org, satendra.t@samsung.com, madhur.verma@samsung.com, hemanshu.s@samsung.com, sst2005@gmail.com Subject: [PATCH] [VB2-CORE] Fixed bug about unnecessary calls to queue cancel and free Date: Tue, 19 Dec 2017 09:11:04 +0530 Message-Id: <1513654864-27272-1-git-send-email-satendra.t@samsung.com> X-Mailer: git-send-email 2.7.4 X-Brightmail-Tracker: H4sIAAAAAAAAA0VSe0hTcRTm5912r9LitrJ+rRC5ZaTh3NY2r+F6iiyMEJQehthNf6i43dm9 m5r0R0Qvh2nFSqkJas2pZY+l5oNKZ2TQVFJKJCp6US4l6G0vuttV+u8753zfOd85HAJTfJcq iULWhjiWMVOyCEnnQOzqeIuDzlI/8WvpwMgURg8dnsLpsR6XjK683iGl2+49w+mBs5dkdJP3 dxjtnJ7B6baRoxLa83Ac2xhh6j7/DDd5Wytkptc/J2WmqvZWYPrsjUqXZqHkAsTkIS4asbnW vEI230ilZeRsydEb1Jp4TRKdSEWzjAUZqZRt6fGphWbBFRVdwpjtQiqd4XkqYX0yZ7XbUHSB lbcZqT0ajValUSeqtFqtSqfPXqfVC5S9qODX64uS4lfhZU9nXkgPgcOEA4QTkNTBluYKiQNE EAqyF8Dxpue4GHwCsGvwy2zlG4CBP6fD5iS3fA2SIFaQtwGsc24VSV8B/Oi+HCLJBNI7V600 iBeRRlgTaJIGSRh5B8BX/TdAsLCQ3AU9P3pCWELGwI6OcyEsJ1Ph06omTJwWBSeGK7CgGJK1 MthZPSITCynwbt2gVMQLYWCwHRexEk5WH8NFQTWAldMeIAaXAbz/d3K27QZ4xNknLEEInmLh tZ4EMW2EvU5/aDeMnA9P/noTFqRAUg5PHFOIlJWw5f0ANjfrd71j1oMJjvb1z3rbBN23jgPx RNmwucaPnQJR5/8PqwegFSxFxbwlH/H64rUsKlXxjIW3s/mqXKvFC0JPF5fWBbzD23yAJAA1 T177ODFLIWVK+AMWH4AERi2Sbx8SUvI85kA54qw5nN2MeB/QC9c8jSkjc63CC7O2HI0uSa0z GBI1anWSjloiv99t360g8xkbKkKoGHFzujAiXHkI7KhZEXOid9nmxezVl48ax3ovlLfHlmVW pLir1saVrqkxXBle7Wq0XNhHLzhjXO5agE9EPlDd7Eye2GjBa/0NbmfG+NQ7dtX3tnvd+4vS jwdSwyu7HC6u0eEZ+esvN7hHtytnSp/vjLkxqP/wtsQXCNQfzDSfqnrx/igX9XK+x5xNSfgC RhOHcTzzDwLa58CKAwAA X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFprFLMWRmVeSWpSXmKPExsWy7bCSnG5Ol0WUwdx+C4tX598wW5xtesNu cXnXHDaLng1bWS3WHrnLbnF46hI2i2Wb/jBZTHn7k91i7flWFovlp68zO3B57Jx1l91j06pO No/Hv16yefRtWcXo8XmTXABrFJdNSmpOZllqkb5dAlfG78eLWQoecVbc/nmftYGxiaOLkZND QsBEYvuhhSxdjFwcQgK7GSXe/Z7ADpGQklj2ZhsbhC0ssfLfc3aIos+MErc6t4Al2IC6n8+Z wQpiiwjYS8z5fBGsmVngBKNE20nhLkYODmGBMInWkzUgYRYBVYmtW6cxgti8Am4St/uWMUPM l5O4ea6TeQIjzwJGhlWMkqkFxbnpucWGBUZ5qeV6xYm5xaV56XrJ+bmbGMEhpqW1g/HEifhD jAIcjEo8vDOumkcJsSaWFVfmHmKU4GBWEuH1OwsU4k1JrKxKLcqPLyrNSS0+xCjNwaIkziuf fyxSSCA9sSQ1OzW1ILUIJsvEwSnVwFgr9+hpkOiyidOmN5bJzCyx/W4sdfSg1YcaBcvXnZ6a yWq5Xufqpe5J/t3IrreqoaM2kM8pOmbSBu35seWJChy+omUrHvQd3NYg9Py294FfSWdMuVQC H7JMPH0981lHTaM4j+2cuR0yh19PWC9VEzivwVZiFkv0bbOuoPCGKUs3hX5YdShghxJLcUai oRZzUXEiAFXL03EtAgAA X-CMS-MailID: 20171219034133epcas5p27ff462d877ce8bf3a54b87061f3d832b X-Msg-Generator: CA Content-Type: text/plain; charset="utf-8" X-MTR: 20171219034133epcas5p27ff462d877ce8bf3a54b87061f3d832b CMS-TYPE: 105P DLP-Filter: Pass X-CFilter-Loop: Reflected X-CMS-RootMailID: 20171219034133epcas5p27ff462d877ce8bf3a54b87061f3d832b X-RootMTR: 20171219034133epcas5p27ff462d877ce8bf3a54b87061f3d832b References: Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 1216 Lines: 32 -When the func vb2_core_reqbufs is called first time after vb2_core_queue_init, the condition q->memory != memory always gets satisfied since q->memory = 0 in vb2_core_queue_init. -After the condition is true, unnecessary calls to __vb2_queue_cancel and __vb2_queue_free are done -In such case, *count is non-zero, q->num_buffers is zero and q->memory is 0 which is not equal to memory field *count=N, q->num_buffers=0, q->memory != memory Signed-off-by: Satendra Singh Thakur --- drivers/media/v4l2-core/videobuf2-core.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/drivers/media/v4l2-core/videobuf2-core.c b/drivers/media/v4l2-core/videobuf2-core.c index a8589d9..b1140d5 100644 --- a/drivers/media/v4l2-core/videobuf2-core.c +++ b/drivers/media/v4l2-core/videobuf2-core.c @@ -662,7 +662,8 @@ int vb2_core_reqbufs(struct vb2_queue *q, enum vb2_memory memory, return -EBUSY; } - if (*count == 0 || q->num_buffers != 0 || q->memory != memory) { + if (*count == 0 || q->num_buffers != 0 || + (q->memory && q->memory != memory)) { /* * We already have buffers allocated, so first check if they * are not in use and can be freed. -- 2.7.4