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: 56964 Received: from vger.kernel.org ([209.132.180.67]) by www.linuxtv.org with esmtp (Exim 4.84_2) (envelope-from ) id 1hcpdv-00037G-NL; Mon, 17 Jun 2019 11:17:44 +0000 Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1728046AbfFQLRj (ORCPT + 1 other); 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-media-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-media@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(+) 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: 56965 X-Patchwork-Delegate: sean@mess.org Received: from vger.kernel.org ([209.132.180.67]) by www.linuxtv.org with esmtp (Exim 4.84_2) (envelope-from ) id 1hcpe6-000387-Px; Mon, 17 Jun 2019 11:17:55 +0000 Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1728122AbfFQLRt (ORCPT + 1 other); 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-media-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-media@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(-) 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; From patchwork Mon Jun 17 11:16:53 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Arnd Bergmann X-Patchwork-Id: 56966 X-Patchwork-Delegate: sean@mess.org Received: from vger.kernel.org ([209.132.180.67]) by www.linuxtv.org with esmtp (Exim 4.84_2) (envelope-from ) id 1hcpeg-0003Aj-PS; Mon, 17 Jun 2019 11:18:31 +0000 Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1727836AbfFQLS3 (ORCPT + 1 other); Mon, 17 Jun 2019 07:18:29 -0400 Received: from mout.kundenserver.de ([212.227.17.13]:52571 "EHLO mout.kundenserver.de" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1727831AbfFQLS3 (ORCPT ); Mon, 17 Jun 2019 07:18:29 -0400 Received: from threadripper.lan ([149.172.19.189]) by mrelayeu.kundenserver.de (mreue108 [212.227.15.145]) with ESMTPA (Nemesis) id 1MvJwN-1iTQEy0IQj-00rD7A; Mon, 17 Jun 2019 13:18:25 +0200 From: Arnd Bergmann To: Mauro Carvalho Chehab Cc: Arnd Bergmann , Sean Young , Mauro Carvalho Chehab , linux-media@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH 3/3] media: ttpci: add RC_CORE dependency Date: Mon, 17 Jun 2019 13:16:53 +0200 Message-Id: <20190617111718.2277220-3-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:jRxuqDqYInydq+mFQ7vU6M2j8TIBGPA36Ci/8tRJAJtPkw1oek7 gd5oG/veApoWmXb6IQ2wtbYKZ+aKf8Q0H9+2Jer6ORlHU5BX7K0DiZhWnrusMwi+fw8YnfZ sAuaH9KeKh+8Min4BZ9bN2TVqMnfWGEyyAEdXVY0/xaHHKVbDBHc4MhMlwRad1rJ//xcq2a dWOfpMuWWYT5SAuSa1hKg== X-Spam-Flag: NO X-UI-Out-Filterresults: notjunk:1; V03:K0:+d2WlyjE6Qg=:suzsE7HbIN0vVUzhIAoKl/ NnebyOq4NMDjq1nx/h3mthYsO2DDJUuyydAMzVkicdOfz08QGd+1iS2s2M10So3YkTmjHuM3y r69SS80U+IEX0Sc9HeA1iCq1xPMVPcIaoLBO6o8uQcDkXxbLBIyGkwHNpjM0FdyC4gemGO9Ax cfHoHPajVFNlvAaWzEnEkvfhAfwO8XaFo8xkm22s9UAGt1L83m9tBv5qeRh2uQ3pkYVlbp3pg TaPj/6ladWz+5++PO1Sl+TrFZwDbNKdlOjdrqO077G3wBMeKexH1p2HdhnNFYs7AnHKyRU/wj x+VQquWNwLD1PQeLris8ceS5r80enyt1WzNgX2x9XF/vHRKSd6BKOotG7Bae8uT7UmwfEU9Ti PRDluiej/qpRhp4lg6E47HO2GmvVoS8mnd1wuao70EfDWf4F1cnttEAaH7WkXdjgUtYPxhQ95 k9Y75qrIuM2QnkfbhjyMMGWZOI5OBJh9AhX/Ba3baBAmSqRCklNqwxiiigNJhFW/id34bLsIh oTOLN4L4qMGMe8xjhftjARQcKD2u98z7gtn0KcnZXsUCbP6IjfE1D03Js4MWAeJBOvhxhkqlo P7n2gpuhw0cnEPDtnxGJZ5ItrJJntfQhZzL/i8NTC0Wuoff3NgY8noprpydBIMyPwTGj0Cltw mnyr66Yr9zC2mu9M4A2TgKvnU2wSIkaAwSZ/ELMpzBMHQNUZ+bfSg3AATtQbNro+9Qeyx6jNN g5lbyylzMEhpCNVDi6fvg1Kfm5hUxgBbGkI4Ow== Sender: linux-media-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-media@vger.kernel.org The ttpci driver now uses the rc-core, so we need to ensure it is enabled: ERROR: "rc_unregister_device" [drivers/media/pci/ttpci/dvb-ttpci.ko] undefined! ERROR: "rc_allocate_device" [drivers/media/pci/ttpci/dvb-ttpci.ko] undefined! ERROR: "rc_free_device" [drivers/media/pci/ttpci/dvb-ttpci.ko] undefined! ERROR: "rc_keydown" [drivers/media/pci/ttpci/dvb-ttpci.ko] undefined! ERROR: "rc_register_device" [drivers/media/pci/ttpci/dvb-ttpci.ko] undefined! Fixes: 71f49a8bf5c5 ("media: ttpci: use rc-core for the IR receiver") Signed-off-by: Arnd Bergmann --- drivers/media/pci/ttpci/Kconfig | 1 + 1 file changed, 1 insertion(+) diff --git a/drivers/media/pci/ttpci/Kconfig b/drivers/media/pci/ttpci/Kconfig index d96d4fa20457..70bc25fb0a6f 100644 --- a/drivers/media/pci/ttpci/Kconfig +++ b/drivers/media/pci/ttpci/Kconfig @@ -9,6 +9,7 @@ config DVB_AV7110 select VIDEO_SAA7146_VV select DVB_AV7110_IR if INPUT_EVDEV=y || INPUT_EVDEV=DVB_AV7110 depends on VIDEO_DEV # dependencies of VIDEO_SAA7146_VV + depends on RC_CORE select DVB_VES1820 if MEDIA_SUBDRV_AUTOSELECT select DVB_VES1X93 if MEDIA_SUBDRV_AUTOSELECT select DVB_STV0299 if MEDIA_SUBDRV_AUTOSELECT