From patchwork Mon Jun 17 11:16:51 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Arnd Bergmann X-Patchwork-Id: 166991 Delivered-To: patch@linaro.org Received: by 2002:a92:4782:0:0:0:0:0 with SMTP id e2csp2725625ilk; Mon, 17 Jun 2019 04:17:41 -0700 (PDT) X-Google-Smtp-Source: APXvYqxpRqDis2W39BVsQlg9Fqyrd0cEEtbkRpRlalKZMBcLSInHumGVxQIe0NweTgzzgI3h1Z1Q X-Received: by 2002:a17:90a:8c90:: with SMTP id b16mr25560448pjo.133.1560770260982; Mon, 17 Jun 2019 04:17:40 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1560770260; cv=none; d=google.com; s=arc-20160816; b=NBTcdN4sIzdk3bkyUpne0XZ+UXckBGK6Uz8z93TO6lhAToDUpRFnMp+/qhyArG/KFM CAMFFZGRY/pcG6QpejXnsycCJvHae1l91efwd2hTtBd7x/KQeH1RoapPntjUhoNsKhAo W+TuOam25nbynboCKrpZI7dbXb73fYk4qLreFqyHYKOy+MUz0LIh0KQHUdGNz1ibnMCX xOqzEtmaqcFGD08CAUs3qp87B6wdR+rFuHAX/vrVMlIxiJ7s2cLe5MKj81TjZq7GoC6a +mj3hMH+eTvuIUQ4MpCl+tedqfxELdjdhl/iALoYAcSy5Xs9n7ncb9kz5d7bS6Y4WylR Kb4A== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:content-transfer-encoding:mime-version :message-id:date:subject:cc:to:from; bh=X80qRSawxrCpc3/bst/K/wsBKdYVv8FrTO7e5ebJbEM=; b=k7bCWsdPBxAh4+ykSFMrFDxX25rIW2D2qdRvuv+k2mZBNYd2vh/7vKkHmUCIbC377+ K41Dla8lvX/ERYPjZcNKzA23pKX630WKteNtTiilfXu9a9ODZ/Li0hlPDsl2/RtwP4ng d8cplfqfbQx0AXjbvdFQYwMSdl2EQ/R/zHJXP2moRFexeXhuJq9XjV16BPKgJ0gKsg9m CHjlBAsI0Q0hlR2CbhAplDo9XwZOVhQ7GYSF5VSbwqurv52rsyTsHqx3A5svFkOECuFD eb5VkAlnHHbQmkhWyI94ByXsoPBpsAcNIZgMX7CshN8yOPXOal1PSLwJDDrt/rgym+/t pSSA== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id h8si9912107plr.291.2019.06.17.04.17.40; Mon, 17 Jun 2019 04:17:40 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1728119AbfFQLRj (ORCPT + 26 others); Mon, 17 Jun 2019 07:17:39 -0400 Received: from mout.kundenserver.de ([217.72.192.74]:50983 "EHLO mout.kundenserver.de" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1727722AbfFQLRi (ORCPT ); Mon, 17 Jun 2019 07:17:38 -0400 Received: from threadripper.lan ([149.172.19.189]) by mrelayeu.kundenserver.de (mreue108 [212.227.15.145]) with ESMTPA (Nemesis) id 1MsHwC-1iVLw61pjW-00th1H; Mon, 17 Jun 2019 13:17:24 +0200 From: Arnd Bergmann To: Maxime Jourdan , Mauro Carvalho Chehab , Kevin Hilman Cc: Arnd Bergmann , Hans Verkuil , Mauro Carvalho Chehab , Greg Kroah-Hartman , linux-media@lists.freedesktop.org, linux-amlogic@lists.infradead.org, linux-media@vger.kernel.org, devel@driverdev.osuosl.org, linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org Subject: [PATCH 1/3] media: meson: include linux/kthread.h Date: Mon, 17 Jun 2019 13:16:51 +0200 Message-Id: <20190617111718.2277220-1-arnd@arndb.de> X-Mailer: git-send-email 2.20.0 MIME-Version: 1.0 X-Provags-ID: V03:K1:mSHisb9SBlgUUulWsfD80t6IakUBYWZsI/Spxa2zTsENfcv0/oL wXRwf2cAITNDLjhX5OdADkdf0mkzcN1j9sL2qpnkOOHIYc63+Isk5bje/I7TYvBZHfDGJVA r7A0t7lhVt8vsJkJcZAlSHPCCkG2B0cUlkxSCtyTkeBDZivJYXHrZfJrcHVhh8U/NkHVn+G z8XIUrkJTFpUT9flwto5A== X-Spam-Flag: NO X-UI-Out-Filterresults: notjunk:1; V03:K0:5enVdSaVH3g=:lmcLQZFPDGsXUdZosube+q +4bBPYpxQcZH3YRVmoqGVXVMqUPyq8TM7t1NN71zGmMECjpzcIQmLaU7wBehGX3UGiPVgveud bZngn+x3mEc1dBYhDKvsXXpaE3OprU81Txg5XLowGYq6isNZ6KIOgJi3tH6dlfn0uObbpEFnB 4ahGUcHZnkN5rAZttQtt3MZX4IPADmEW6qUqV2DG/ljWH+HInH0qSuztP0TS86JrXpIR6ePUb T9kfGAMH9jVdznB3U2hmjp1OnjUtgCzDYFg8YA6Jo54lmz+kHJ0j5B5DhwrlDxsYQ3wTqGKoo tl/Tqaz6zYPScHb1WWULi1QSKdcTUd6rJi1lfl7njBI5S48ulo7ZqtY8ljuokbZG6vFHeUmi5 dRp3yhAluO/M9XvyQ1PMIop6lgTH1YdxbXROBk48FbCe6K6aGHWoYhBIh/aYUTTNgdrZreBiD d4tEKweu7ZsbYbMrbcUuxk6cwHkAcU4KiM2ux1AALq9D51+xFnsXwX3sLjkn6hJdLskd186X5 nAhmEuYcb7MnoiAOOv3WDlNbTJ9ewCh82N1J2PS0IbKHBlQU6uVmHG3b9gTNNTwcHu9a6rFjN a2ovzOzKLSDdWfmAw6B4p9m6nN7wTMN3DAm9rqgQ6nyghjUgg2s1YbddtQiK3Xor9sp6xjfbg hGvLWwPgjOhrvGT0k4E5veu8V5wi1NikcQB656On7/8RjcH8m4TpuG8OplhGPBBx0Ssb3EV5h +N7WfNq/1vPfUrrjdHG00Z4MX80xwcFKSjHb1A== Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Without this header, we get a compilation error in some configurations: drivers/staging/media/meson/vdec/vdec.c: In function 'vdec_recycle_thread': drivers/staging/media/meson/vdec/vdec.c:59:10: error: implicit declaration of function 'kthread_should_stop' [-Werror=implicit-function-declaration] Fixes: 3e7f51bd9607 ("media: meson: add v4l2 m2m video decoder driver") Signed-off-by: Arnd Bergmann --- drivers/staging/media/meson/vdec/vdec.c | 1 + 1 file changed, 1 insertion(+) -- 2.20.0 diff --git a/drivers/staging/media/meson/vdec/vdec.c b/drivers/staging/media/meson/vdec/vdec.c index 0a1a04fd5d13..eb335a0f2bdd 100644 --- a/drivers/staging/media/meson/vdec/vdec.c +++ b/drivers/staging/media/meson/vdec/vdec.c @@ -8,6 +8,7 @@ #include #include #include +#include #include #include #include From patchwork Mon Jun 17 11:16:52 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Arnd Bergmann X-Patchwork-Id: 166992 Delivered-To: patch@linaro.org Received: by 2002:a92:4782:0:0:0:0:0 with SMTP id e2csp2725829ilk; Mon, 17 Jun 2019 04:17:51 -0700 (PDT) X-Google-Smtp-Source: APXvYqyLiVbGRdXlamNwWssGB/RpIb/JrF4GDsJbsRZJ3mKrCfrLMzStkJIVJdsi1YJ+FZE81XkH X-Received: by 2002:a17:902:4906:: with SMTP id u6mr108771720pld.220.1560770271103; Mon, 17 Jun 2019 04:17:51 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1560770271; cv=none; d=google.com; s=arc-20160816; b=nGE4X2wwRkrPYdEL1CdvrNz4h77R21KlcnAvnzGILFBlRf8bMUpvsvxmkZLH8/sIK3 BtfC5jM+0fVHyw8Xs2xHY9ytT+aWxa/S8e1XmHnSO+wxV3IhTL/kpnb1nqM1OEpq3w2u IZE77MYOcj3AR0A9YYNSStaFM5eQ6E6bnntM3nrTaZgk/uzYJmIfrMEtru+u6IIs5hEE f8l8D0c4hD0ORNtpy9gQe/ZJACibjaDva2ZVKWDuwPMhhlCvM6DR7fpcaP0QQZ5KtjUe EMKam8jhqL0Bz1Hu5qRvklWAR5jOJzusd+VHv8bfNMCAprRSvUlQm84jJ3tJ3O721Da3 g3JA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from; bh=dr5xO4RGl29sx6aKwOSWbLR62iBS+UyCPjz495SMIWg=; b=J+oxnlAvoLYmIi3qcEsBBeUP9erqHsHV41AG45kogOm4QkuoffvB8UFDcg5Pd514Fy FuPBiGPvG0p3iDEBF1yReKCwwYXUaOaGwpEbwIkfCu7fL05Zz7YcJi1JiYxButnbzFZz NeCRrCux2eRuQFGPOWeQj5OnZ40adlqqhgeRVBFOQAqTDyuxhYiUr8qzdYHsv8HQVlkL a2hbTv5/aZMqDqqK5srtHyml6uVtUhwZkVW1vEThDohoHunVKMHctD7Odo4HkEIuY6If D/mpbf0wH52PjaOp/mHbG49lr5jxMm4KaWMBP9D3OJpl+q2QFOPkztebJ57pzrns7T0w ukwA== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id h8si9912107plr.291.2019.06.17.04.17.50; Mon, 17 Jun 2019 04:17:51 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1728151AbfFQLRt (ORCPT + 26 others); Mon, 17 Jun 2019 07:17:49 -0400 Received: from mout.kundenserver.de ([217.72.192.73]:44427 "EHLO mout.kundenserver.de" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1727599AbfFQLRt (ORCPT ); Mon, 17 Jun 2019 07:17:49 -0400 Received: from threadripper.lan ([149.172.19.189]) by mrelayeu.kundenserver.de (mreue108 [212.227.15.145]) with ESMTPA (Nemesis) id 1N79ly-1ihwra0FNk-017V4f; Mon, 17 Jun 2019 13:17:42 +0200 From: Arnd Bergmann To: Mauro Carvalho Chehab Cc: Arnd Bergmann , Hans Verkuil , linux-media@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH 2/3] media: dvb_frontend: split dvb_frontend_handle_ioctl function Date: Mon, 17 Jun 2019 13:16:52 +0200 Message-Id: <20190617111718.2277220-2-arnd@arndb.de> X-Mailer: git-send-email 2.20.0 In-Reply-To: <20190617111718.2277220-1-arnd@arndb.de> References: <20190617111718.2277220-1-arnd@arndb.de> MIME-Version: 1.0 X-Provags-ID: V03:K1:upYYRH6KMdTm/jl5OCVbNn4KgWGMZDIcmATiaGhDYQZpRr1yWLe cExWHNCIc+WiciBqTGaHGtsNzeKYFnRGQXM1n+t2V0sPoi2cx0gHKHR+wIfGxSMQRP75+Cb DSwAzAAOZj+UrMZ9D+IPi2M8mNcxrFUNVRXO5yAxIA7DD8xrDSkA720vL3s+Ce0Z6JNakLn 7jOrSnR7fPf2xpYFH5F/w== X-Spam-Flag: NO X-UI-Out-Filterresults: notjunk:1; V03:K0:cvJgTMyJlFg=:j7TS26qQq+OSl8j4ep4vij YZ4DK4MHAAK1cmCwV/9myYnPQ957JMFhOldsDcAqRN9dwgCFF4UK4iDds3C3q9MJnBGnS2fCc zYOUyYn6wobLlF5KdDWx4Ych0pUDhbO+SStug1rpnSO8RDzD9hhjzQ0K7Wg/8jdfJ9XjSq9QO mPsh4urMy5GHU9r5YPsulwjhuIZEn0J/GdSppGdF54d6CN1Qh7NVA2U2l1xPGo4kZmoy1Ejgl j/Qm9yPAISmyYdChX3lxqZUJGKi0i0f3s49Jf5dB6sA16TfTHKEOSOt6UhvqqndJ310iFc7Yj on4+pDnWRsY0/8hx91VfxfXmSOku9+NUYgKuXHvqi2yPUWl7vDxcbHt8FDIT2hpTpqMQOZvyU qqXuaolr9yIYz3g51QThsqK8ojE0+9U8pgw0ldFQR7afbRgX3+MECT9+OAWeUYBQ0eDuKBZpx ajLnFg2dJHjgxV9p+ciLLh+peoz3+X82CV7PT4Ebw3/fqgZZZlna+ZZVhyw5vamDvQQe1Vxfd IIw2D96aICFN+pvpgwgwmh4zCdB0j+/OXdsDwFNn58GQL/ZdxwEsKsTFS/oDlztpV2jhVL+3a XE0svIiKHz8LS1uVOi3TXT/EX3p8qv1imrR4wJ9zrxsOlmjM/57d6gQxuN8ey4WUHEtrtrPil dPqnuxtpvRkjA0Ox008ChRu5TEPL/SUQOXDIyiF5KIKljfduUUf+A7a/YBU18S3NLvk1NpKFL rijPEPYMZWVvtBoIFCV+bSwUgyIAOisk/5E8pA== Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Over time, dvb_frontend_handle_ioctl() has grown to the point where we now get a warning from the compiler about excessive stack usage: drivers/media/dvb-core/dvb_frontend.c: In function 'dvb_frontend_handle_ioctl': drivers/media/dvb-core/dvb_frontend.c:2692:1: error: the frame size of 1048 bytes is larger than 1024 bytes [-Werror=frame-larger-than=] Almost all of this is used by the dtv_frontend_properties structure in the FE_GET_PROPERTY and FE_GET_FRONTEND commands. Splitting those into separate function reduces the stack usage of the main function to just 136 bytes, the others are under 500 each. Signed-off-by: Arnd Bergmann --- drivers/media/dvb-core/dvb_frontend.c | 140 ++++++++++++++------------ 1 file changed, 77 insertions(+), 63 deletions(-) -- 2.20.0 diff --git a/drivers/media/dvb-core/dvb_frontend.c b/drivers/media/dvb-core/dvb_frontend.c index 2dc7761a3680..202f0ba5819c 100644 --- a/drivers/media/dvb-core/dvb_frontend.c +++ b/drivers/media/dvb-core/dvb_frontend.c @@ -2314,6 +2314,78 @@ static int dtv_set_frontend(struct dvb_frontend *fe) return 0; } +static int dvb_get_property(struct dvb_frontend *fe, struct file *file, + struct dtv_properties *tvps) +{ + struct dvb_frontend_private *fepriv = fe->frontend_priv; + struct dtv_property *tvp = NULL; + struct dtv_frontend_properties getp; + int i, err; + + memcpy(&getp, &fe->dtv_property_cache, sizeof(getp)); + + dev_dbg(fe->dvb->device, "%s: properties.num = %d\n", + __func__, tvps->num); + dev_dbg(fe->dvb->device, "%s: properties.props = %p\n", + __func__, tvps->props); + + /* + * Put an arbitrary limit on the number of messages that can + * be sent at once + */ + if (!tvps->num || (tvps->num > DTV_IOCTL_MAX_MSGS)) + return -EINVAL; + + tvp = memdup_user((void __user *)tvps->props, tvps->num * sizeof(*tvp)); + if (IS_ERR(tvp)) + return PTR_ERR(tvp); + + /* + * Let's use our own copy of property cache, in order to + * avoid mangling with DTV zigzag logic, as drivers might + * return crap, if they don't check if the data is available + * before updating the properties cache. + */ + if (fepriv->state != FESTATE_IDLE) { + err = dtv_get_frontend(fe, &getp, NULL); + if (err < 0) + goto out; + } + for (i = 0; i < tvps->num; i++) { + err = dtv_property_process_get(fe, &getp, + tvp + i, file); + if (err < 0) + goto out; + } + + if (copy_to_user((void __user *)tvps->props, tvp, + tvps->num * sizeof(struct dtv_property))) { + err = -EFAULT; + goto out; + } + + err = 0; +out: + kfree(tvp); + return err; +} + +static int dvb_get_frontend(struct dvb_frontend *fe, + struct dvb_frontend_parameters *p_out) +{ + struct dtv_frontend_properties getp; + + /* + * Let's use our own copy of property cache, in order to + * avoid mangling with DTV zigzag logic, as drivers might + * return crap, if they don't check if the data is available + * before updating the properties cache. + */ + memcpy(&getp, &fe->dtv_property_cache, sizeof(getp)); + + return dtv_get_frontend(fe, &getp, p_out); +} + static int dvb_frontend_handle_ioctl(struct file *file, unsigned int cmd, void *parg) { @@ -2359,58 +2431,9 @@ static int dvb_frontend_handle_ioctl(struct file *file, err = 0; break; } - case FE_GET_PROPERTY: { - struct dtv_properties *tvps = parg; - struct dtv_property *tvp = NULL; - struct dtv_frontend_properties getp = fe->dtv_property_cache; - - dev_dbg(fe->dvb->device, "%s: properties.num = %d\n", - __func__, tvps->num); - dev_dbg(fe->dvb->device, "%s: properties.props = %p\n", - __func__, tvps->props); - - /* - * Put an arbitrary limit on the number of messages that can - * be sent at once - */ - if (!tvps->num || (tvps->num > DTV_IOCTL_MAX_MSGS)) - return -EINVAL; - - tvp = memdup_user((void __user *)tvps->props, tvps->num * sizeof(*tvp)); - if (IS_ERR(tvp)) - return PTR_ERR(tvp); - - /* - * Let's use our own copy of property cache, in order to - * avoid mangling with DTV zigzag logic, as drivers might - * return crap, if they don't check if the data is available - * before updating the properties cache. - */ - if (fepriv->state != FESTATE_IDLE) { - err = dtv_get_frontend(fe, &getp, NULL); - if (err < 0) { - kfree(tvp); - return err; - } - } - for (i = 0; i < tvps->num; i++) { - err = dtv_property_process_get(fe, &getp, - tvp + i, file); - if (err < 0) { - kfree(tvp); - return err; - } - } - - if (copy_to_user((void __user *)tvps->props, tvp, - tvps->num * sizeof(struct dtv_property))) { - kfree(tvp); - return -EFAULT; - } - kfree(tvp); - err = 0; + case FE_GET_PROPERTY: + err = dvb_get_property(fe, file, parg); break; - } case FE_GET_INFO: { struct dvb_frontend_info *info = parg; @@ -2548,7 +2571,6 @@ static int dvb_frontend_handle_ioctl(struct file *file, fepriv->tune_mode_flags = (unsigned long)parg; err = 0; break; - /* DEPRECATED dish control ioctls */ case FE_DISHNETWORK_SEND_LEGACY_CMD: @@ -2667,22 +2689,14 @@ static int dvb_frontend_handle_ioctl(struct file *file, break; err = dtv_set_frontend(fe); break; + case FE_GET_EVENT: err = dvb_frontend_get_event(fe, parg, file->f_flags); break; - case FE_GET_FRONTEND: { - struct dtv_frontend_properties getp = fe->dtv_property_cache; - - /* - * Let's use our own copy of property cache, in order to - * avoid mangling with DTV zigzag logic, as drivers might - * return crap, if they don't check if the data is available - * before updating the properties cache. - */ - err = dtv_get_frontend(fe, &getp, parg); + case FE_GET_FRONTEND: + err = dvb_get_frontend(fe, parg); break; - } default: return -ENOTSUPP;