From patchwork Thu Mar 7 10:12:22 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Srinivas Kandagatla X-Patchwork-Id: 10842607 Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id 02ABD17E4 for ; Thu, 7 Mar 2019 10:13:20 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id E22D12E183 for ; Thu, 7 Mar 2019 10:13:19 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id D41542E374; Thu, 7 Mar 2019 10:13:19 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on pdx-wl-mail.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-8.0 required=2.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,MAILING_LIST_MULTI,RCVD_IN_DNSWL_HI autolearn=ham version=3.3.1 Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 755632E183 for ; Thu, 7 Mar 2019 10:13:19 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726131AbfCGKNR (ORCPT ); Thu, 7 Mar 2019 05:13:17 -0500 Received: from mail-wr1-f68.google.com ([209.85.221.68]:44960 "EHLO mail-wr1-f68.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726275AbfCGKNR (ORCPT ); Thu, 7 Mar 2019 05:13:17 -0500 Received: by mail-wr1-f68.google.com with SMTP id w2so16700933wrt.11 for ; Thu, 07 Mar 2019 02:13:16 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=o8BYMahdyLpS4J6ZFucCS3ofixQiIJoSCGVZibyHjj8=; b=mxibRsT7eF/cC6Ed0qLikadqu+huQ+J+lx0QPSPyd/w64x2ow9v2ZMCyJEe3tLVLZu XrypsmopYuOcwmFYpNQG4Ko6Hnx38/In8wp3BR0swJiyHteZFPZ9LdZAwgiQ2Ob7Az9i +1zavAurpgt+LUClF0wRabX7coBlUMXGPvRgZhxH037v0gGmVLMFy83eg8z3Cx3EvwDP yPUpMHD6PMwAzmTjIFZDgmbIjny1BkR0pEtnjFqxrmR4JdykRxZqdJMnD0YM+rzmAyYp ePKMlYlUAl9xR+Uq6DCMvhYtXCSWP4Bl1AOkkuXEXLJHSAfH7kgk5bVN0KbTelZQI6im OR1Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=o8BYMahdyLpS4J6ZFucCS3ofixQiIJoSCGVZibyHjj8=; b=tPCnLw+xSnoQyfiTvboI0X8iSP2VkNsoAjELt5YnALVc67sVFxLw8lBuGp8qOZ/LLU 7E6dM7rHXElp13VThxvB46+DnFROYj7KHr+wP/YxTQRm9HD4h3gNHNILR9u3PGgjFK+t 4eWaYn5xETXyKEQXU4/UAeGIb904oawhWzZ4y9fW2JhwDEnbcnl5dtcawfMYvCxQ4927 MLzzJb/ZseE4Kfip5fg5qwCLdvBmeGfOLwAp2zYrNLDvOJlQBI2kwZPbRphPly4tcq6z mD+SAxj9ivHqOdDVg7jOj0ugxhCpq23OVp+KpT1KfgfV7PusLEztUU2cBTHJpc2T7HfF kziw== X-Gm-Message-State: APjAAAU+VR4g4HaCAp1Od7dty6q9JGlkjwWxd/R38rQy5XshLXzkjS74 5ZuoRi3XfRXctw836u5MWmoF0w== X-Google-Smtp-Source: APXvYqyQGvCBC3IQlw6zZ0nfAJimJ03uAVNbdTiF9EneF5Qyse1FflLLFj+sBuBjHF6Fi9rUA2FTIg== X-Received: by 2002:adf:f792:: with SMTP id q18mr5995764wrp.324.1551953595673; Thu, 07 Mar 2019 02:13:15 -0800 (PST) Received: from srini-hackbox.lan (cpc89974-aztw32-2-0-cust43.18-1.cable.virginm.net. [86.30.250.44]) by smtp.gmail.com with ESMTPSA id n9sm3529767wmi.33.2019.03.07.02.13.14 (version=TLS1_2 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Thu, 07 Mar 2019 02:13:15 -0800 (PST) From: Srinivas Kandagatla To: gregkh@linuxfoundation.org, arnd@arndb.de Cc: linux-kernel@vger.kernel.org, bjorn.andersson@linaro.org, bkumar@qti.qualcomm.com, linux-arm-msm@vger.kernel.org, ktadakam@qti.qualcomm.com, Thierry Escande , Srinivas Kandagatla Subject: [PATCH 1/8] misc: fastrpc: Avoid free of DMA buffer in interrupt context Date: Thu, 7 Mar 2019 10:12:22 +0000 Message-Id: <20190307101229.7856-2-srinivas.kandagatla@linaro.org> X-Mailer: git-send-email 2.21.0 In-Reply-To: <20190307101229.7856-1-srinivas.kandagatla@linaro.org> References: <20190307101229.7856-1-srinivas.kandagatla@linaro.org> MIME-Version: 1.0 Sender: linux-arm-msm-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-arm-msm@vger.kernel.org X-Virus-Scanned: ClamAV using ClamSMTP From: Thierry Escande When the remote DSP invocation is interrupted by the user, the associated DMA buffer can be freed in interrupt context causing a kernel BUG. This patch adds a worker thread associated to the fastrpc context. It is scheduled in the rpmsg callback to decrease its refcount out of the interrupt context. Fixes: c68cfb718c8f ("misc: fastrpc: Add support for context Invoke method") Signed-off-by: Thierry Escande Signed-off-by: Srinivas Kandagatla --- drivers/misc/fastrpc.c | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) diff --git a/drivers/misc/fastrpc.c b/drivers/misc/fastrpc.c index 89aec17738ef..82e7217ae87a 100644 --- a/drivers/misc/fastrpc.c +++ b/drivers/misc/fastrpc.c @@ -149,6 +149,7 @@ struct fastrpc_invoke_ctx { struct kref refcount; struct list_head node; /* list of ctxs */ struct completion work; + struct work_struct put_work; struct fastrpc_msg msg; struct fastrpc_user *fl; struct fastrpc_remote_arg *rpra; @@ -311,6 +312,14 @@ static void fastrpc_context_put(struct fastrpc_invoke_ctx *ctx) kref_put(&ctx->refcount, fastrpc_context_free); } +static void fastrpc_context_put_wq(struct work_struct *work) +{ + struct fastrpc_invoke_ctx *ctx = + container_of(work, struct fastrpc_invoke_ctx, put_work); + + fastrpc_context_put(ctx); +} + static struct fastrpc_invoke_ctx *fastrpc_context_alloc( struct fastrpc_user *user, u32 kernel, u32 sc, struct fastrpc_invoke_args *args) @@ -345,6 +354,7 @@ static struct fastrpc_invoke_ctx *fastrpc_context_alloc( ctx->tgid = user->tgid; ctx->cctx = cctx; init_completion(&ctx->work); + INIT_WORK(&ctx->put_work, fastrpc_context_put_wq); spin_lock(&user->lock); list_add_tail(&ctx->node, &user->pending); @@ -1349,7 +1359,13 @@ static int fastrpc_rpmsg_callback(struct rpmsg_device *rpdev, void *data, ctx->retval = rsp->retval; complete(&ctx->work); - fastrpc_context_put(ctx); + + /* + * The DMA buffer associated with the context cannot be freed in + * interrupt context so schedule it through a worker thread to + * avoid a kernel BUG. + */ + schedule_work(&ctx->put_work); return 0; } From patchwork Thu Mar 7 10:12:23 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Srinivas Kandagatla X-Patchwork-Id: 10842625 Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id 82791139A for ; Thu, 7 Mar 2019 10:14:07 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 6AB7C2DF89 for ; Thu, 7 Mar 2019 10:14:07 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 5AF3D2E183; Thu, 7 Mar 2019 10:14:07 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on pdx-wl-mail.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-8.0 required=2.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,MAILING_LIST_MULTI,RCVD_IN_DNSWL_HI autolearn=ham version=3.3.1 Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id E6B572DF89 for ; Thu, 7 Mar 2019 10:14:06 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726293AbfCGKOB (ORCPT ); Thu, 7 Mar 2019 05:14:01 -0500 Received: from mail-wr1-f67.google.com ([209.85.221.67]:37971 "EHLO mail-wr1-f67.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726418AbfCGKNT (ORCPT ); Thu, 7 Mar 2019 05:13:19 -0500 Received: by mail-wr1-f67.google.com with SMTP id g12so16715490wrm.5 for ; Thu, 07 Mar 2019 02:13:18 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=BN3mETDxO7NCrA/T4tG8om1pvyGRKVieStW75qGQ3Gs=; b=jgKi668EjRONXhMjHjPq8+3uT7o5yYGkQ9wIoIksWJXOPIpPefAZ1jNU6RZmAqNb1N 1zAC0UGzSDI1POOztCGLPgVR55cYHcBT7PDR8K6Elp6XjWxqDxoYIVxbchuJx4FEQW8V z+3eFNJftGE738LHlkVnfKlG8LAW2lBNqYX8EI13xsv0ubkcsY9QHD1ssQIfU6KbK/0y IwgmSItGIf6Nl3pvohJYc+TKqBJGTR0GKN69/RVLKsqW5WVZpMnaXDMqDmuXqn7u3lfZ pyPvfuGmWoM/Rb8gszX4NO21kbKRw43BweTajPHpkCRVBJTvNZhpZNeUlheM9GMu0d4i k5gA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=BN3mETDxO7NCrA/T4tG8om1pvyGRKVieStW75qGQ3Gs=; b=BrL8KFRsc1cJwWWRlml9Td7K5wgAzERhHq/r21bDj2Sn0OThg1M0P10bs17VCZPfuv gCTlWt+xf7verr1pZw6GzK1VYKLT29Sws1k39HQWZpvV0DpXOMpnm6gSDIZ/3RbEGJJa 01Oy64OmDQ1cqJMZ3aBmfapSJ5VLzo8jn8dGmRIrW6XCyDOB74ePqZ5A/weUutpmiXNg Zxzm+E0RS2uwtoT248bKlmyRrRFIUJTOjJwNvEytiUGzXi5QqpEBCNRNz+fYL2HL2b/l lUo9TjA5Ed8DawLx6UXFnabbaClG3zEE61OfHpyKJPsZFOgkbwcru+dIau+Z1YlvTJIs t4ww== X-Gm-Message-State: APjAAAXEs5Ahp371gcM1IzIg1k9tSlPmw6ocUoEpOvYyuyRWE17HUr9E KUZ7r0sFCCWCmdMp1F6EMU9nXg== X-Google-Smtp-Source: APXvYqwX04gG6I2J+ra4aXaK7H5PR3FYCj++7Mofa0ETtZaTwg7VBxgAnyQg4A0xUJk3r/Jf0i7L5g== X-Received: by 2002:adf:ce90:: with SMTP id r16mr6218993wrn.64.1551953597047; Thu, 07 Mar 2019 02:13:17 -0800 (PST) Received: from srini-hackbox.lan (cpc89974-aztw32-2-0-cust43.18-1.cable.virginm.net. [86.30.250.44]) by smtp.gmail.com with ESMTPSA id n9sm3529767wmi.33.2019.03.07.02.13.15 (version=TLS1_2 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Thu, 07 Mar 2019 02:13:16 -0800 (PST) From: Srinivas Kandagatla To: gregkh@linuxfoundation.org, arnd@arndb.de Cc: linux-kernel@vger.kernel.org, bjorn.andersson@linaro.org, bkumar@qti.qualcomm.com, linux-arm-msm@vger.kernel.org, ktadakam@qti.qualcomm.com, Thierry Escande , Srinivas Kandagatla Subject: [PATCH 2/8] misc: fastrpc: Fix a possible double free Date: Thu, 7 Mar 2019 10:12:23 +0000 Message-Id: <20190307101229.7856-3-srinivas.kandagatla@linaro.org> X-Mailer: git-send-email 2.21.0 In-Reply-To: <20190307101229.7856-1-srinivas.kandagatla@linaro.org> References: <20190307101229.7856-1-srinivas.kandagatla@linaro.org> MIME-Version: 1.0 Sender: linux-arm-msm-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-arm-msm@vger.kernel.org X-Virus-Scanned: ClamAV using ClamSMTP From: Thierry Escande This patch fixes the error exit path of fastrpc_init_create_process(). If the DMA allocation or the DSP invoke fails the fastrpc_map was freed but not removed from the mapping list leading to a double free once the mapping list is emptied in fastrpc_device_release(). [srinivas kandagatla]: Cleaned up error path labels and reset init mem to NULL after free Fixes: d73f71c7c6ee("misc: fastrpc: Add support for create remote init process") Signed-off-by: Thierry Escande Signed-off-by: Srinivas Kandagatla --- drivers/misc/fastrpc.c | 31 ++++++++++++++++++++----------- 1 file changed, 20 insertions(+), 11 deletions(-) diff --git a/drivers/misc/fastrpc.c b/drivers/misc/fastrpc.c index 82e7217ae87a..8fbcc607a77e 100644 --- a/drivers/misc/fastrpc.c +++ b/drivers/misc/fastrpc.c @@ -853,12 +853,12 @@ static int fastrpc_init_create_process(struct fastrpc_user *fl, if (copy_from_user(&init, argp, sizeof(init))) { err = -EFAULT; - goto bail; + goto err; } if (init.filelen > INIT_FILELEN_MAX) { err = -EINVAL; - goto bail; + goto err; } inbuf.pgid = fl->tgid; @@ -872,17 +872,15 @@ static int fastrpc_init_create_process(struct fastrpc_user *fl, if (init.filelen && init.filefd) { err = fastrpc_map_create(fl, init.filefd, init.filelen, &map); if (err) - goto bail; + goto err; } memlen = ALIGN(max(INIT_FILELEN_MAX, (int)init.filelen * 4), 1024 * 1024); err = fastrpc_buf_alloc(fl, fl->sctx->dev, memlen, &imem); - if (err) { - fastrpc_map_put(map); - goto bail; - } + if (err) + goto err_alloc; fl->init_mem = imem; args[0].ptr = (u64)(uintptr_t)&inbuf; @@ -918,13 +916,24 @@ static int fastrpc_init_create_process(struct fastrpc_user *fl, err = fastrpc_internal_invoke(fl, true, FASTRPC_INIT_HANDLE, sc, args); + if (err) + goto err_invoke; - if (err) { + kfree(args); + + return 0; + +err_invoke: + fl->init_mem = NULL; + fastrpc_buf_free(imem); +err_alloc: + if (map) { + spin_lock(&fl->lock); + list_del(&map->node); + spin_unlock(&fl->lock); fastrpc_map_put(map); - fastrpc_buf_free(imem); } - -bail: +err: kfree(args); return err; From patchwork Thu Mar 7 10:12:24 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Srinivas Kandagatla X-Patchwork-Id: 10842609 Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id 9D31C139A for ; Thu, 7 Mar 2019 10:13:24 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 8A7A62E183 for ; Thu, 7 Mar 2019 10:13:24 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 7EA4E2E374; Thu, 7 Mar 2019 10:13:24 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on pdx-wl-mail.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-8.0 required=2.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,MAILING_LIST_MULTI,RCVD_IN_DNSWL_HI autolearn=ham version=3.3.1 Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 2F2632E183 for ; Thu, 7 Mar 2019 10:13:24 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726452AbfCGKNV (ORCPT ); Thu, 7 Mar 2019 05:13:21 -0500 Received: from mail-wr1-f65.google.com ([209.85.221.65]:35901 "EHLO mail-wr1-f65.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726423AbfCGKNU (ORCPT ); Thu, 7 Mar 2019 05:13:20 -0500 Received: by mail-wr1-f65.google.com with SMTP id o17so16728484wrw.3 for ; Thu, 07 Mar 2019 02:13:19 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=tIvmnq/sBI2toQzFNBq1UWBjHh7Rzax6iQto5A1QPn4=; b=jwm/QQvVT820lCl/gDoXVSyfY49C96sNHRAx6goCkxIRuQjhbxGY2YzDjLN/Phxihs pDGD0+vlMvxsVVnqPvV0oQfLnTgAt36yCGbbRJm59/802ESMlGNwaEHwiGRyTUVPd9dN VGNu3Y0xoGzaDTqXeuSQFpmY+okIlsdT/8KKWjqH0GhNtg8DclT/umfe7k4RV2mXJw2k r+5RNAYi1CtNhPJXyQg3BLyHyiyVABjpQJ/9W86jfQNBn00k7zpQzQf9Pcv9bANIXLkX Qx0tH9023PoEG9eUMZXYCNyVeKcafnbeItRGu00II2U231wYij/5rW7RMdzmqaMMgDS/ 31Sg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=tIvmnq/sBI2toQzFNBq1UWBjHh7Rzax6iQto5A1QPn4=; b=XqvN/xAYKlaGZvE1KGuXUNm1w9cpAV7aT6o544bog4SYraJJHNMvDZrI6KaYl4iBNC sXsI1Q6DrYA0fsU3PE51YewqiI4ao7qU3dQzFc2aYIezTXoiWyrYI/io5fON+IBraz8Q O43+Moa5gr61nxSLyqPH8bc/lQLF2h2mPDPovq+1bnfCi/JdYFiifA46Of5xWhKplbs7 txlmGrU14KUeUlVQnwMvt90n54trUkO/Uh/SO1L8U38Hdmc66EMOC9vsYpnXGLgBsmpU RlF8UjQ0jzmckPo1uxiA7DhIzHohjrMCZyLkL4B1H27C52C6FAs8XieAtagQP/SMStD8 LHaw== X-Gm-Message-State: APjAAAWR3LvZI3VbovrAxfgxlinVfw/0msq1SOvhKzwgtb+qzBD/X0uk MmpscxwKaApH+Rw2edIpbfN4uA== X-Google-Smtp-Source: APXvYqy2aAkZJBhpznOXDFapiFZtCEtsFJs2EXG2wBhgWuXQcZmJGVQlsZBbRqy+O46tm/IBclZ0bw== X-Received: by 2002:adf:e949:: with SMTP id m9mr6640281wrn.1.1551953598190; Thu, 07 Mar 2019 02:13:18 -0800 (PST) Received: from srini-hackbox.lan (cpc89974-aztw32-2-0-cust43.18-1.cable.virginm.net. [86.30.250.44]) by smtp.gmail.com with ESMTPSA id n9sm3529767wmi.33.2019.03.07.02.13.17 (version=TLS1_2 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Thu, 07 Mar 2019 02:13:17 -0800 (PST) From: Srinivas Kandagatla To: gregkh@linuxfoundation.org, arnd@arndb.de Cc: linux-kernel@vger.kernel.org, bjorn.andersson@linaro.org, bkumar@qti.qualcomm.com, linux-arm-msm@vger.kernel.org, ktadakam@qti.qualcomm.com, Srinivas Kandagatla Subject: [PATCH 3/8] misc: fastrpc: make sure memory read and writes are visible Date: Thu, 7 Mar 2019 10:12:24 +0000 Message-Id: <20190307101229.7856-4-srinivas.kandagatla@linaro.org> X-Mailer: git-send-email 2.21.0 In-Reply-To: <20190307101229.7856-1-srinivas.kandagatla@linaro.org> References: <20190307101229.7856-1-srinivas.kandagatla@linaro.org> MIME-Version: 1.0 Sender: linux-arm-msm-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-arm-msm@vger.kernel.org X-Virus-Scanned: ClamAV using ClamSMTP dma_alloc_coherent buffers could have writes queued in store buffers so commit them before sending buffer to DSP using correct dma barriers. Same with vice-versa. Fixes: c68cfb718c8f ("misc: fastrpc: Add support for context Invoke method") Signed-off-by: Srinivas Kandagatla --- drivers/misc/fastrpc.c | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/drivers/misc/fastrpc.c b/drivers/misc/fastrpc.c index 8fbcc607a77e..753d62ceb1fb 100644 --- a/drivers/misc/fastrpc.c +++ b/drivers/misc/fastrpc.c @@ -792,6 +792,9 @@ static int fastrpc_internal_invoke(struct fastrpc_user *fl, u32 kernel, if (err) goto bail; } + + /* make sure that all CPU memory writes are seen by DSP */ + dma_wmb(); /* Send invoke buffer to remote dsp */ err = fastrpc_invoke_send(fl->sctx, ctx, kernel, handle); if (err) @@ -808,6 +811,8 @@ static int fastrpc_internal_invoke(struct fastrpc_user *fl, u32 kernel, goto bail; if (ctx->nscalars) { + /* make sure that all memory writes by DSP are seen by CPU */ + dma_rmb(); /* populate all the output buffers with results */ err = fastrpc_put_args(ctx, kernel); if (err) From patchwork Thu Mar 7 10:12:25 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Srinivas Kandagatla X-Patchwork-Id: 10842621 Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id CFB0317E4 for ; Thu, 7 Mar 2019 10:14:00 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id BBC2C2DD9B for ; Thu, 7 Mar 2019 10:14:00 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id AD1B92E097; Thu, 7 Mar 2019 10:14:00 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on pdx-wl-mail.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-8.0 required=2.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,MAILING_LIST_MULTI,RCVD_IN_DNSWL_HI autolearn=ham version=3.3.1 Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 19A282DD9B for ; Thu, 7 Mar 2019 10:14:00 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726305AbfCGKNu (ORCPT ); Thu, 7 Mar 2019 05:13:50 -0500 Received: from mail-wr1-f66.google.com ([209.85.221.66]:44967 "EHLO mail-wr1-f66.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726427AbfCGKNV (ORCPT ); Thu, 7 Mar 2019 05:13:21 -0500 Received: by mail-wr1-f66.google.com with SMTP id w2so16701139wrt.11 for ; Thu, 07 Mar 2019 02:13:19 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=kcTfOS4Sv44YjvbK1N2vMmkz/JIfFV0zpTQndWw2C2o=; b=wO3FSUKZJKQmqaRn4bNgRRQBbS/urgDEedce1emHnQPNxHN6bwAxu+FxLng93k74x6 tm+gtcaPAh/X9TGu+We7nzdtQp+m+vlnVaFev0bg4sDarrgJG94EumxJ/0zTfAsmGNRi 2L+qGoAGLzPKi+ClzCASGnJmHhFkrwu5DU/CsG60PYUmX8l/50R97lhQqvkNbf51kVkE VNqqvwrJWwkhCGnpnX2JUbNx3uP0FWZ7zL2roK8yq7I64utV1PnOx2HRYdiBh0Xfd2Ti XsKmH+Bl1fDE9NTzKfLkcoZHJlMKdTY7CBGHfmyuCiHjI0GAtklN0t4Kzb+o+WqEnAxt s4WA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=kcTfOS4Sv44YjvbK1N2vMmkz/JIfFV0zpTQndWw2C2o=; b=qZEz4CxZGkX96FdiQIQhb7rJY0kcgAMiciTtHwDVhJV1W31IHZwvzlC6U5G/mXP/nF r8W9VWDbPOeKp+xXFLKVA1hvQCZVxXUTkLL0c893vx2WwmKY9x4AWhBseCNZF6zd7/c3 MZwfX6TGDTbkrqSNCmkCNZzJYjYBw5se1z8mwynndYcTKqjhyoCgM9fUCzSHaqlKi8yT laf8Z8jYgFh81xsBM9m05ADZrbNXJXg6jvS2HUNuv0MdX1OPsDUaT31cFpraPbmio9Ey IBJ31klsvmBGTCqvdTXv+DjFd2xLMTq5SBFZVhhcgGFD+RsjT26FfVLnBr1HTCIhgFCq /XgQ== X-Gm-Message-State: APjAAAXwGOnxonFVQhSVxdaXbt9NZcCTgxDg/yb47F6DaTj8yFsWACGX 0y8nPOVrH31Hlszhh4Fb3/Zx5A== X-Google-Smtp-Source: APXvYqyCrzTzwXUjJibcn/v1ll2EMmv9yLlXtUipbPAtNSp63n26pkMkIGFvjTgFmoASes6QSvIgQg== X-Received: by 2002:adf:afe3:: with SMTP id y35mr6136409wrd.318.1551953599096; Thu, 07 Mar 2019 02:13:19 -0800 (PST) Received: from srini-hackbox.lan (cpc89974-aztw32-2-0-cust43.18-1.cable.virginm.net. [86.30.250.44]) by smtp.gmail.com with ESMTPSA id n9sm3529767wmi.33.2019.03.07.02.13.18 (version=TLS1_2 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Thu, 07 Mar 2019 02:13:18 -0800 (PST) From: Srinivas Kandagatla To: gregkh@linuxfoundation.org, arnd@arndb.de Cc: linux-kernel@vger.kernel.org, bjorn.andersson@linaro.org, bkumar@qti.qualcomm.com, linux-arm-msm@vger.kernel.org, ktadakam@qti.qualcomm.com, Srinivas Kandagatla Subject: [PATCH 4/8] misc: fastrpc: use correct spinlock variant Date: Thu, 7 Mar 2019 10:12:25 +0000 Message-Id: <20190307101229.7856-5-srinivas.kandagatla@linaro.org> X-Mailer: git-send-email 2.21.0 In-Reply-To: <20190307101229.7856-1-srinivas.kandagatla@linaro.org> References: <20190307101229.7856-1-srinivas.kandagatla@linaro.org> MIME-Version: 1.0 Sender: linux-arm-msm-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-arm-msm@vger.kernel.org X-Virus-Scanned: ClamAV using ClamSMTP context spin lock can be interrupted from callback path so use correct spinlock so that we do not hit spinlock recursion. Fixes: c68cfb718c8f ("misc: fastrpc: Add support for context Invoke method") Signed-off-by: Srinivas Kandagatla --- drivers/misc/fastrpc.c | 48 +++++++++++++++++++++++++----------------- 1 file changed, 29 insertions(+), 19 deletions(-) diff --git a/drivers/misc/fastrpc.c b/drivers/misc/fastrpc.c index 753d62ceb1fb..f71b5faae1dd 100644 --- a/drivers/misc/fastrpc.c +++ b/drivers/misc/fastrpc.c @@ -283,6 +283,7 @@ static void fastrpc_context_free(struct kref *ref) { struct fastrpc_invoke_ctx *ctx; struct fastrpc_channel_ctx *cctx; + unsigned long flags; int i; ctx = container_of(ref, struct fastrpc_invoke_ctx, refcount); @@ -294,9 +295,9 @@ static void fastrpc_context_free(struct kref *ref) if (ctx->buf) fastrpc_buf_free(ctx->buf); - spin_lock(&cctx->lock); + spin_lock_irqsave(&cctx->lock, flags); idr_remove(&cctx->ctx_idr, ctx->ctxid >> 4); - spin_unlock(&cctx->lock); + spin_unlock_irqrestore(&cctx->lock, flags); kfree(ctx->maps); kfree(ctx); @@ -326,6 +327,7 @@ static struct fastrpc_invoke_ctx *fastrpc_context_alloc( { struct fastrpc_channel_ctx *cctx = user->cctx; struct fastrpc_invoke_ctx *ctx = NULL; + unsigned long flags; int ret; ctx = kzalloc(sizeof(*ctx), GFP_KERNEL); @@ -360,15 +362,15 @@ static struct fastrpc_invoke_ctx *fastrpc_context_alloc( list_add_tail(&ctx->node, &user->pending); spin_unlock(&user->lock); - spin_lock(&cctx->lock); + spin_lock_irqsave(&cctx->lock, flags); ret = idr_alloc_cyclic(&cctx->ctx_idr, ctx, 1, FASTRPC_CTX_MAX, GFP_ATOMIC); if (ret < 0) { - spin_unlock(&cctx->lock); + spin_unlock_irqrestore(&cctx->lock, flags); goto err_idr; } ctx->ctxid = ret << 4; - spin_unlock(&cctx->lock); + spin_unlock_irqrestore(&cctx->lock, flags); kref_init(&ctx->refcount); @@ -948,9 +950,10 @@ static struct fastrpc_session_ctx *fastrpc_session_alloc( struct fastrpc_channel_ctx *cctx) { struct fastrpc_session_ctx *session = NULL; + unsigned long flags; int i; - spin_lock(&cctx->lock); + spin_lock_irqsave(&cctx->lock, flags); for (i = 0; i < cctx->sesscount; i++) { if (!cctx->session[i].used && cctx->session[i].valid) { cctx->session[i].used = true; @@ -958,7 +961,7 @@ static struct fastrpc_session_ctx *fastrpc_session_alloc( break; } } - spin_unlock(&cctx->lock); + spin_unlock_irqrestore(&cctx->lock, flags); return session; } @@ -966,9 +969,11 @@ static struct fastrpc_session_ctx *fastrpc_session_alloc( static void fastrpc_session_free(struct fastrpc_channel_ctx *cctx, struct fastrpc_session_ctx *session) { - spin_lock(&cctx->lock); + unsigned long flags; + + spin_lock_irqsave(&cctx->lock, flags); session->used = false; - spin_unlock(&cctx->lock); + spin_unlock_irqrestore(&cctx->lock, flags); } static int fastrpc_release_current_dsp_process(struct fastrpc_user *fl) @@ -994,12 +999,13 @@ static int fastrpc_device_release(struct inode *inode, struct file *file) struct fastrpc_channel_ctx *cctx = fl->cctx; struct fastrpc_invoke_ctx *ctx, *n; struct fastrpc_map *map, *m; + unsigned long flags; fastrpc_release_current_dsp_process(fl); - spin_lock(&cctx->lock); + spin_lock_irqsave(&cctx->lock, flags); list_del(&fl->user); - spin_unlock(&cctx->lock); + spin_unlock_irqrestore(&cctx->lock, flags); if (fl->init_mem) fastrpc_buf_free(fl->init_mem); @@ -1027,6 +1033,7 @@ static int fastrpc_device_open(struct inode *inode, struct file *filp) { struct fastrpc_channel_ctx *cctx = miscdev_to_cctx(filp->private_data); struct fastrpc_user *fl = NULL; + unsigned long flags; fl = kzalloc(sizeof(*fl), GFP_KERNEL); if (!fl) @@ -1050,9 +1057,9 @@ static int fastrpc_device_open(struct inode *inode, struct file *filp) return -EBUSY; } - spin_lock(&cctx->lock); + spin_lock_irqsave(&cctx->lock, flags); list_add_tail(&fl->user, &cctx->users); - spin_unlock(&cctx->lock); + spin_unlock_irqrestore(&cctx->lock, flags); return 0; } @@ -1208,6 +1215,7 @@ static int fastrpc_cb_probe(struct platform_device *pdev) struct fastrpc_session_ctx *sess; struct device *dev = &pdev->dev; int i, sessions = 0; + unsigned long flags; cctx = dev_get_drvdata(dev->parent); if (!cctx) @@ -1215,7 +1223,7 @@ static int fastrpc_cb_probe(struct platform_device *pdev) of_property_read_u32(dev->of_node, "qcom,nsessions", &sessions); - spin_lock(&cctx->lock); + spin_lock_irqsave(&cctx->lock, flags); sess = &cctx->session[cctx->sesscount]; sess->used = false; sess->valid = true; @@ -1236,7 +1244,7 @@ static int fastrpc_cb_probe(struct platform_device *pdev) } } cctx->sesscount++; - spin_unlock(&cctx->lock); + spin_unlock_irqrestore(&cctx->lock, flags); dma_set_mask(dev, DMA_BIT_MASK(32)); return 0; @@ -1246,16 +1254,17 @@ static int fastrpc_cb_remove(struct platform_device *pdev) { struct fastrpc_channel_ctx *cctx = dev_get_drvdata(pdev->dev.parent); struct fastrpc_session_ctx *sess = dev_get_drvdata(&pdev->dev); + unsigned long flags; int i; - spin_lock(&cctx->lock); + spin_lock_irqsave(&cctx->lock, flags); for (i = 1; i < FASTRPC_MAX_SESSIONS; i++) { if (cctx->session[i].sid == sess->sid) { cctx->session[i].valid = false; cctx->sesscount--; } } - spin_unlock(&cctx->lock); + spin_unlock_irqrestore(&cctx->lock, flags); return 0; } @@ -1337,11 +1346,12 @@ static void fastrpc_rpmsg_remove(struct rpmsg_device *rpdev) { struct fastrpc_channel_ctx *cctx = dev_get_drvdata(&rpdev->dev); struct fastrpc_user *user; + unsigned long flags; - spin_lock(&cctx->lock); + spin_lock_irqsave(&cctx->lock, flags); list_for_each_entry(user, &cctx->users, user) fastrpc_notify_users(user); - spin_unlock(&cctx->lock); + spin_unlock_irqrestore(&cctx->lock, flags); misc_deregister(&cctx->miscdev); of_platform_depopulate(&rpdev->dev); From patchwork Thu Mar 7 10:12:26 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Srinivas Kandagatla X-Patchwork-Id: 10842619 Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id 378CB1869 for ; Thu, 7 Mar 2019 10:13:50 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 25D802E183 for ; Thu, 7 Mar 2019 10:13:50 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 1A3072E376; Thu, 7 Mar 2019 10:13:50 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on pdx-wl-mail.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-8.0 required=2.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,MAILING_LIST_MULTI,RCVD_IN_DNSWL_HI autolearn=ham version=3.3.1 Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id AE7792E183 for ; Thu, 7 Mar 2019 10:13:49 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726485AbfCGKNX (ORCPT ); Thu, 7 Mar 2019 05:13:23 -0500 Received: from mail-wr1-f67.google.com ([209.85.221.67]:34675 "EHLO mail-wr1-f67.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726450AbfCGKNW (ORCPT ); Thu, 7 Mar 2019 05:13:22 -0500 Received: by mail-wr1-f67.google.com with SMTP id f14so16711869wrg.1 for ; Thu, 07 Mar 2019 02:13:21 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=QZXoHVQPaXkLWzJQl44F85OjDTIH9iGYQGdOEpv6nuY=; b=pMjDtZJPJQTw0RSw2Ka5bahtRkfV765FB9eL2raft0YXUfyRD7NI7HsQwp3PwWVC8z 5PH6MjR3S88X8GTvDCApUmoebrLIHWKhVliVHwPxFsvxG0V0nfpbok5UKiL3faQZ2DQC OjpxtrGMQI7yoXR2KW2LqFxn7YTiSenp6jyMkxYDt4OgvLBJe3a1fWJp9EskU2WBtjz0 1dnocfoXzTm9I1CBCzj0Xu5N6W5KmXFppVhQZ83lC0q4CwXyAFGIyshkgdRkB4QBm+OZ ZeXUqREKk2Dew0l0wtcnMTSWxR7V4+8CiB5UFbdZrGsq/t1YvfDTmOOIRFfROBXDRpvv OnhQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=QZXoHVQPaXkLWzJQl44F85OjDTIH9iGYQGdOEpv6nuY=; b=mjb/0zV6p58XLvM4N0A+aCuNPpv5s8OUrF5Y4uNSgfYWegSIOrpLuCYb6KX4xa0XEG N1x9vEtGMguqqCHYSLyyaGRpDD4if8Pfg4Fx6QHKZ3L8UHJOe/L3zCVZHh8w+47gt+NW vaxAP+2fQw3HJZrP5hnfWBm50OjD3XLMOmr94w3p+ZuSP2kZ5fsDiVRB1kFARtYsItt8 MWeXEIJVPw8kv/z1rfuqDJuzovmJEIG3qXWmY1gJDyISxD0m6CDc7Fzt+xzHnA6tUut9 3NvZQ52eXULiNU9yRbettGrA40WEVKTbS7qeelhnlaEt1aOUuvKe21vMAgy6jUo8QCG2 4WqA== X-Gm-Message-State: APjAAAUjQwQcAhmrIQNgo9ANPnpdTwdocq/D+B8fYDPNYFEO1OVc9ZI/ DcnTJbcL+UhVO4W6FFQlaY5t8w== X-Google-Smtp-Source: APXvYqz4Ggk2/O9AqhkyOf9PaIXn0uj8rpHJ9fnQ9niz7Q6qfMPooJBq9iY1R/aaJTXwO6e4mwvXpA== X-Received: by 2002:a5d:690d:: with SMTP id t13mr6067865wru.135.1551953600131; Thu, 07 Mar 2019 02:13:20 -0800 (PST) Received: from srini-hackbox.lan (cpc89974-aztw32-2-0-cust43.18-1.cable.virginm.net. [86.30.250.44]) by smtp.gmail.com with ESMTPSA id n9sm3529767wmi.33.2019.03.07.02.13.19 (version=TLS1_2 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Thu, 07 Mar 2019 02:13:19 -0800 (PST) From: Srinivas Kandagatla To: gregkh@linuxfoundation.org, arnd@arndb.de Cc: linux-kernel@vger.kernel.org, bjorn.andersson@linaro.org, bkumar@qti.qualcomm.com, linux-arm-msm@vger.kernel.org, ktadakam@qti.qualcomm.com, Srinivas Kandagatla Subject: [PATCH 5/8] misc: fastrpc: consider address offset before sending to DSP Date: Thu, 7 Mar 2019 10:12:26 +0000 Message-Id: <20190307101229.7856-6-srinivas.kandagatla@linaro.org> X-Mailer: git-send-email 2.21.0 In-Reply-To: <20190307101229.7856-1-srinivas.kandagatla@linaro.org> References: <20190307101229.7856-1-srinivas.kandagatla@linaro.org> MIME-Version: 1.0 Sender: linux-arm-msm-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-arm-msm@vger.kernel.org X-Virus-Scanned: ClamAV using ClamSMTP While passing address phy address to DSP, take care of the offset calculated from virtual address vma. Fixes: c68cfb718c8f ("misc: fastrpc: Add support for context Invoke method") Signed-off-by: Srinivas Kandagatla --- drivers/misc/fastrpc.c | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/drivers/misc/fastrpc.c b/drivers/misc/fastrpc.c index f71b5faae1dd..209f3e63f660 100644 --- a/drivers/misc/fastrpc.c +++ b/drivers/misc/fastrpc.c @@ -679,8 +679,16 @@ static int fastrpc_get_args(u32 kernel, struct fastrpc_invoke_ctx *ctx) pages[i].size = roundup(len, PAGE_SIZE); if (ctx->maps[i]) { + struct vm_area_struct *vma = NULL; + rpra[i].pv = (u64) ctx->args[i].ptr; pages[i].addr = ctx->maps[i]->phys; + + vma = find_vma(current->mm, ctx->args[i].ptr); + if (vma) + pages[i].addr += ctx->args[i].ptr - + vma->vm_start; + } else { rlen -= ALIGN(args, FASTRPC_ALIGN) - args; args = ALIGN(args, FASTRPC_ALIGN); From patchwork Thu Mar 7 10:12:27 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Srinivas Kandagatla X-Patchwork-Id: 10842617 Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id A5142139A for ; Thu, 7 Mar 2019 10:13:49 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 918D62E183 for ; Thu, 7 Mar 2019 10:13:49 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 85A312E374; Thu, 7 Mar 2019 10:13:49 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on pdx-wl-mail.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-8.0 required=2.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,MAILING_LIST_MULTI,RCVD_IN_DNSWL_HI autolearn=ham version=3.3.1 Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id E7FC32E183 for ; Thu, 7 Mar 2019 10:13:48 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726423AbfCGKNi (ORCPT ); Thu, 7 Mar 2019 05:13:38 -0500 Received: from mail-wm1-f65.google.com ([209.85.128.65]:55119 "EHLO mail-wm1-f65.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726279AbfCGKNY (ORCPT ); Thu, 7 Mar 2019 05:13:24 -0500 Received: by mail-wm1-f65.google.com with SMTP id f3so8733839wmj.4 for ; Thu, 07 Mar 2019 02:13:22 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=lY5fme3k/AIN047HEtN16Hcq0nFOQyFwzBciIshWG10=; b=fItgmMtQYoRoAlSj4omNm/jYeERMEeY/EFrHZg53IaUQgWUPuRb/xap32+6XrbjKjA u6fzu3Awl8PIV6fVudBjS+plRt97qIuliwV9VUoceLyUATA3OkNcJHV/oZbYnUdJJKKr mBNtRboVw39EU5LKh/LnlOTBCpFqVzvva1byMElwWnt97vPM/1R6O1ZRGTuN0+NpnReQ j/HQJ/0oQAI/jbSe2e60XAydql/bpYIB2FgcIYKiEwMj2Ap6oNnI5v4X7lq+XqVFUBuX zKJ0QJwAVKuc7aIKjix4R8NG6PpHF6KcGECCZ9nHj69ZYJyltQ0MXX/f5IJK+TM7Ospg /u1g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=lY5fme3k/AIN047HEtN16Hcq0nFOQyFwzBciIshWG10=; b=CGvgdE9QnMis7ioDH2W6OsPzuxwPERPpkAX+FLqETvuJM5vTI7ZnOnEQ0Pp0Gf9yZZ rPtBly6DBv1I96sjA0US+ZmWsrCjedhLa/hEhl/XeKVicl9s40zwIp23zizlmll3JZ+V KEWlqgpxIwwJsNiZsKUVnlXzjR0MQJiw8HaAOwdzGGI4JQosyNhNPsAjPnsPtloIGlZ6 Is0FyJB4nM1Q1Shs63L/qv587vF4+5Dg2nK/dW/e+aTacNxb32n16ry61aSR6chbllgO 07fhxZc3Zq8IQaYP/ceL9f75AhoApMNPkAq7tUKKFJ+iCI3bvMwOdq1HFjXeAKfBAUja S+aQ== X-Gm-Message-State: APjAAAWG+XeBlN0rp7glipQkxMoIDwdBEWjMKX207ihQhakDoFWIqOhB n71HzRnb5a+tZhlFat9889Z7vg== X-Google-Smtp-Source: APXvYqxRoejhENWyuJzvrTe0w3e1gs5qp0+Co+BnpaPnNhE7CLd8pqebJCnjyhPaTnlGEpyf5kOfcg== X-Received: by 2002:a1c:f70c:: with SMTP id v12mr5035977wmh.19.1551953601216; Thu, 07 Mar 2019 02:13:21 -0800 (PST) Received: from srini-hackbox.lan (cpc89974-aztw32-2-0-cust43.18-1.cable.virginm.net. [86.30.250.44]) by smtp.gmail.com with ESMTPSA id n9sm3529767wmi.33.2019.03.07.02.13.20 (version=TLS1_2 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Thu, 07 Mar 2019 02:13:20 -0800 (PST) From: Srinivas Kandagatla To: gregkh@linuxfoundation.org, arnd@arndb.de Cc: linux-kernel@vger.kernel.org, bjorn.andersson@linaro.org, bkumar@qti.qualcomm.com, linux-arm-msm@vger.kernel.org, ktadakam@qti.qualcomm.com, Srinivas Kandagatla Subject: [PATCH 6/8] misc: fastrpc: take into account of overlapping buffers Date: Thu, 7 Mar 2019 10:12:27 +0000 Message-Id: <20190307101229.7856-7-srinivas.kandagatla@linaro.org> X-Mailer: git-send-email 2.21.0 In-Reply-To: <20190307101229.7856-1-srinivas.kandagatla@linaro.org> References: <20190307101229.7856-1-srinivas.kandagatla@linaro.org> MIME-Version: 1.0 Sender: linux-arm-msm-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-arm-msm@vger.kernel.org X-Virus-Scanned: ClamAV using ClamSMTP Argument buffers that are passed could be derived from a big buffer, and some of the arguments buffers could overlap each other. Take care of such instanaces. This is optimization that DSP expects while sending buffers which overlap. So make the DSP happy doing it. Without which DSP seems to crash. Fixes: c68cfb718c8f ("misc: fastrpc: Add support for context Invoke method") Signed-off-by: Srinivas Kandagatla --- drivers/misc/fastrpc.c | 112 +++++++++++++++++++++++++++++++++++------ 1 file changed, 98 insertions(+), 14 deletions(-) diff --git a/drivers/misc/fastrpc.c b/drivers/misc/fastrpc.c index 209f3e63f660..17bbb017bb08 100644 --- a/drivers/misc/fastrpc.c +++ b/drivers/misc/fastrpc.c @@ -12,6 +12,7 @@ #include #include #include +#include #include #include #include @@ -104,6 +105,15 @@ struct fastrpc_invoke_rsp { int retval; /* invoke return value */ }; +struct fastrpc_buf_overlap { + u64 start; + u64 end; + int raix; + u64 mstart; + u64 mend; + u64 offset; +}; + struct fastrpc_buf { struct fastrpc_user *fl; struct dma_buf *dmabuf; @@ -156,6 +166,7 @@ struct fastrpc_invoke_ctx { struct fastrpc_map **maps; struct fastrpc_buf *buf; struct fastrpc_invoke_args *args; + struct fastrpc_buf_overlap *olaps; struct fastrpc_channel_ctx *cctx; }; @@ -300,6 +311,7 @@ static void fastrpc_context_free(struct kref *ref) spin_unlock_irqrestore(&cctx->lock, flags); kfree(ctx->maps); + kfree(ctx->olaps); kfree(ctx); } @@ -321,6 +333,55 @@ static void fastrpc_context_put_wq(struct work_struct *work) fastrpc_context_put(ctx); } +#define CMP(aa, bb) ((aa) == (bb) ? 0 : (aa) < (bb) ? -1 : 1) +static int olaps_cmp(const void *a, const void *b) +{ + struct fastrpc_buf_overlap *pa = (struct fastrpc_buf_overlap *)a; + struct fastrpc_buf_overlap *pb = (struct fastrpc_buf_overlap *)b; + /* sort with lowest starting buffer first */ + int st = CMP(pa->start, pb->start); + /* sort with highest ending buffer first */ + int ed = CMP(pb->end, pa->end); + + return st == 0 ? ed : st; +} + +static void fastrpc_get_buff_overlaps(struct fastrpc_invoke_ctx *ctx) +{ + u64 max_end = 0; + int i; + + for (i = 0; i < ctx->nbufs; ++i) { + ctx->olaps[i].start = ctx->args[i].ptr; + ctx->olaps[i].end = ctx->olaps[i].start + ctx->args[i].length; + ctx->olaps[i].raix = i; + } + + sort(ctx->olaps, ctx->nbufs, sizeof(*ctx->olaps), olaps_cmp, NULL); + + for (i = 0; i < ctx->nbufs; ++i) { + /* Falling inside previous range */ + if (ctx->olaps[i].start < max_end) { + ctx->olaps[i].mstart = max_end; + ctx->olaps[i].mend = ctx->olaps[i].end; + ctx->olaps[i].offset = max_end - ctx->olaps[i].start; + + if (ctx->olaps[i].end > max_end) { + max_end = ctx->olaps[i].end; + } else { + ctx->olaps[i].mend = 0; + ctx->olaps[i].mstart = 0; + } + + } else { + ctx->olaps[i].mend = ctx->olaps[i].end; + ctx->olaps[i].mstart = ctx->olaps[i].start; + ctx->olaps[i].offset = 0; + max_end = ctx->olaps[i].end; + } + } +} + static struct fastrpc_invoke_ctx *fastrpc_context_alloc( struct fastrpc_user *user, u32 kernel, u32 sc, struct fastrpc_invoke_args *args) @@ -347,7 +408,15 @@ static struct fastrpc_invoke_ctx *fastrpc_context_alloc( kfree(ctx); return ERR_PTR(-ENOMEM); } + ctx->olaps = kcalloc(ctx->nscalars, + sizeof(*ctx->olaps), GFP_KERNEL); + if (!ctx->olaps) { + kfree(ctx->maps); + kfree(ctx); + return ERR_PTR(-ENOMEM); + } ctx->args = args; + fastrpc_get_buff_overlaps(ctx); } ctx->sc = sc; @@ -380,6 +449,7 @@ static struct fastrpc_invoke_ctx *fastrpc_context_alloc( list_del(&ctx->node); spin_unlock(&user->lock); kfree(ctx->maps); + kfree(ctx->olaps); kfree(ctx); return ERR_PTR(ret); @@ -598,8 +668,11 @@ static u64 fastrpc_get_payload_size(struct fastrpc_invoke_ctx *ctx, int metalen) size = ALIGN(metalen, FASTRPC_ALIGN); for (i = 0; i < ctx->nscalars; i++) { if (ctx->args[i].fd == 0 || ctx->args[i].fd == -1) { - size = ALIGN(size, FASTRPC_ALIGN); - size += ctx->args[i].length; + + if (ctx->olaps[i].offset == 0) + size = ALIGN(size, FASTRPC_ALIGN); + + size += (ctx->olaps[i].mend - ctx->olaps[i].mstart); } } @@ -637,12 +710,11 @@ static int fastrpc_get_args(u32 kernel, struct fastrpc_invoke_ctx *ctx) struct fastrpc_remote_arg *rpra; struct fastrpc_invoke_buf *list; struct fastrpc_phy_page *pages; - int inbufs, i, err = 0; - u64 rlen, pkt_size; + int inbufs, i, oix, err = 0; + u64 len, rlen, pkt_size; uintptr_t args; int metalen; - inbufs = REMOTE_SCALARS_INBUFS(ctx->sc); metalen = fastrpc_get_meta_size(ctx); pkt_size = fastrpc_get_payload_size(ctx, metalen); @@ -665,8 +737,11 @@ static int fastrpc_get_args(u32 kernel, struct fastrpc_invoke_ctx *ctx) rlen = pkt_size - metalen; ctx->rpra = rpra; - for (i = 0; i < ctx->nbufs; ++i) { - u64 len = ctx->args[i].length; + for (oix = 0; oix < ctx->nbufs; ++oix) { + int mlen; + + i = ctx->olaps[oix].raix; + len = ctx->args[i].length; rpra[i].pv = 0; rpra[i].len = len; @@ -690,16 +765,25 @@ static int fastrpc_get_args(u32 kernel, struct fastrpc_invoke_ctx *ctx) vma->vm_start; } else { - rlen -= ALIGN(args, FASTRPC_ALIGN) - args; - args = ALIGN(args, FASTRPC_ALIGN); - if (rlen < len) + + if (ctx->olaps[oix].offset == 0) { + rlen -= ALIGN(args, FASTRPC_ALIGN) - args; + args = ALIGN(args, FASTRPC_ALIGN); + } + + mlen = ctx->olaps[oix].mend - ctx->olaps[oix].mstart; + + if (rlen < mlen) goto bail; - rpra[i].pv = args; - pages[i].addr = ctx->buf->phys + (pkt_size - rlen); + rpra[i].pv = args - ctx->olaps[oix].offset; + pages[i].addr = ctx->buf->phys - + ctx->olaps[oix].offset + + (pkt_size - rlen); pages[i].addr = pages[i].addr & PAGE_MASK; - args = args + len; - rlen -= len; + + args = args + mlen; + rlen -= mlen; } if (i < inbufs && !ctx->maps[i]) { From patchwork Thu Mar 7 10:12:28 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Srinivas Kandagatla X-Patchwork-Id: 10842615 Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id 0F0A117E4 for ; Thu, 7 Mar 2019 10:13:49 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id EF8072E372 for ; Thu, 7 Mar 2019 10:13:48 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id E2EE82E374; Thu, 7 Mar 2019 10:13:48 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on pdx-wl-mail.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-8.0 required=2.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,MAILING_LIST_MULTI,RCVD_IN_DNSWL_HI autolearn=ham version=3.3.1 Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 6D5312E183 for ; Thu, 7 Mar 2019 10:13:48 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726279AbfCGKNj (ORCPT ); Thu, 7 Mar 2019 05:13:39 -0500 Received: from mail-wm1-f66.google.com ([209.85.128.66]:33404 "EHLO mail-wm1-f66.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726480AbfCGKNX (ORCPT ); Thu, 7 Mar 2019 05:13:23 -0500 Received: by mail-wm1-f66.google.com with SMTP id c13so6372563wmb.0 for ; Thu, 07 Mar 2019 02:13:23 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=FPxNdvt+kGcCG8uzNQ9lroy0iRhdBt0KuB6zFefUSXk=; b=MyY/T+4heOH9NyLJAPUtf+h+tOOTQ8w5lyCiHswAOkciuxnZZ6cy4xY5fRJAIrbjih Xp54rf/2Zv++De+fDp4m9fGyqICPYROXsUdk/YZoseajrB1xo4P2YMJtPYvsdF4F2Ui2 39pm5ovfhNJokRMnByEP0I1o5wWOt8a2SRShhX7x29DT9G/5FZucynJqqJA+IbbMSxmJ HWljc38inYK6/Bm0k1Ig0UIBE0G48KLlHPWINZJS0p5Dbl59bHDsCQHfQblTwclFU6tJ Gjq6MplvHraf/q+8pEIAE4kMDPXOENrR85NTf7T7mAu8I/z9Dr8WcKSr1b8liB6QzeZR Twxg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=FPxNdvt+kGcCG8uzNQ9lroy0iRhdBt0KuB6zFefUSXk=; b=ji/EiekW/Exo+ZsbzCIEAXMUPganOdD6EOYlnfdW58/+ACSRESpEBdiX+7DmHKuOBb WqaltzRquiqZ7+k0Y399LJCAt4E/YdLGkX6EK6TKyH0tFvgCBb31/1IxIIWpUttXfidO E1bE75KwuQu132ig9NQeOZE09/qBFygnpoz1GAy8E5gQpnGaU8BhXlJJ3NITCTMMqH8F Al6pxex2SU3zko73UxD1F/hSAxQwOACymgUvrPYKbJ82L3Y9oelG2v91F2cUqaz4EnEo j5nNSgKAYIJH8YFa1KHlNME+UoXgSOfIIRi/MrLtQkg0w5HfMUsP8/fevviedCgk1BGO FCeg== X-Gm-Message-State: APjAAAWa5PBTHqbrwLY4q1l1WehH0EahWj/SPq1p8QCQRl8jv6W4tt8x OBh630tVjYpkC6lMlfQ6VrmrgVRVnBE= X-Google-Smtp-Source: APXvYqyIc4wKrIBuiP1HgJ3aapQUwC47zh24QaW859GlrZr2bB+ott7Dgb9yKFprUDl42jBNuA1waQ== X-Received: by 2002:a1c:a885:: with SMTP id r127mr5582093wme.74.1551953602372; Thu, 07 Mar 2019 02:13:22 -0800 (PST) Received: from srini-hackbox.lan (cpc89974-aztw32-2-0-cust43.18-1.cable.virginm.net. [86.30.250.44]) by smtp.gmail.com with ESMTPSA id n9sm3529767wmi.33.2019.03.07.02.13.21 (version=TLS1_2 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Thu, 07 Mar 2019 02:13:21 -0800 (PST) From: Srinivas Kandagatla To: gregkh@linuxfoundation.org, arnd@arndb.de Cc: linux-kernel@vger.kernel.org, bjorn.andersson@linaro.org, bkumar@qti.qualcomm.com, linux-arm-msm@vger.kernel.org, ktadakam@qti.qualcomm.com, Srinivas Kandagatla Subject: [PATCH 7/8] misc: fastrpc: fix remote page size calculation Date: Thu, 7 Mar 2019 10:12:28 +0000 Message-Id: <20190307101229.7856-8-srinivas.kandagatla@linaro.org> X-Mailer: git-send-email 2.21.0 In-Reply-To: <20190307101229.7856-1-srinivas.kandagatla@linaro.org> References: <20190307101229.7856-1-srinivas.kandagatla@linaro.org> MIME-Version: 1.0 Sender: linux-arm-msm-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-arm-msm@vger.kernel.org X-Virus-Scanned: ClamAV using ClamSMTP Remote page size should be calculated based on address and size, fix this! Without this we will endup with one page less in cases where the buffer is across 3 pages. Fixes: c68cfb718c8f ("misc: fastrpc: Add support for context Invoke method") Reported-by: Krishnaiah Tadakamalla Signed-off-by: Srinivas Kandagatla --- drivers/misc/fastrpc.c | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/drivers/misc/fastrpc.c b/drivers/misc/fastrpc.c index 17bbb017bb08..d0e2e2620087 100644 --- a/drivers/misc/fastrpc.c +++ b/drivers/misc/fastrpc.c @@ -712,6 +712,7 @@ static int fastrpc_get_args(u32 kernel, struct fastrpc_invoke_ctx *ctx) struct fastrpc_phy_page *pages; int inbufs, i, oix, err = 0; u64 len, rlen, pkt_size; + u64 pg_start, pg_end; uintptr_t args; int metalen; @@ -751,8 +752,6 @@ static int fastrpc_get_args(u32 kernel, struct fastrpc_invoke_ctx *ctx) if (!len) continue; - pages[i].size = roundup(len, PAGE_SIZE); - if (ctx->maps[i]) { struct vm_area_struct *vma = NULL; @@ -764,6 +763,11 @@ static int fastrpc_get_args(u32 kernel, struct fastrpc_invoke_ctx *ctx) pages[i].addr += ctx->args[i].ptr - vma->vm_start; + pg_start = (ctx->args[i].ptr & PAGE_MASK) >> PAGE_SHIFT; + pg_end = ((ctx->args[i].ptr + len - 1) & PAGE_MASK) >> + PAGE_SHIFT; + pages[i].size = (pg_end - pg_start + 1) * PAGE_SIZE; + } else { if (ctx->olaps[oix].offset == 0) { @@ -782,6 +786,9 @@ static int fastrpc_get_args(u32 kernel, struct fastrpc_invoke_ctx *ctx) (pkt_size - rlen); pages[i].addr = pages[i].addr & PAGE_MASK; + pg_start = (args & PAGE_MASK) >> PAGE_SHIFT; + pg_end = ((args + len - 1) & PAGE_MASK) >> PAGE_SHIFT; + pages[i].size = (pg_end - pg_start + 1) * PAGE_SIZE; args = args + mlen; rlen -= mlen; } From patchwork Thu Mar 7 10:12:29 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Srinivas Kandagatla X-Patchwork-Id: 10842611 Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id 3D06C139A for ; Thu, 7 Mar 2019 10:13:34 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 2BF382E183 for ; Thu, 7 Mar 2019 10:13:34 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 202CE2E374; Thu, 7 Mar 2019 10:13:34 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on pdx-wl-mail.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-8.0 required=2.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,MAILING_LIST_MULTI,RCVD_IN_DNSWL_HI autolearn=ham version=3.3.1 Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 117532E183 for ; Thu, 7 Mar 2019 10:13:33 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726442AbfCGKNZ (ORCPT ); Thu, 7 Mar 2019 05:13:25 -0500 Received: from mail-wm1-f65.google.com ([209.85.128.65]:34630 "EHLO mail-wm1-f65.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726496AbfCGKNZ (ORCPT ); Thu, 7 Mar 2019 05:13:25 -0500 Received: by mail-wm1-f65.google.com with SMTP id o10so6364266wmc.1 for ; Thu, 07 Mar 2019 02:13:24 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=Niv4ry4Ht+sxGjnCxKmfDqaEVLiah3CqjMUhN/hOXN4=; b=yR1nmvMf1fCdlxvgSENtriX3WgsjDI+IPDnnJk7JFdhE8JCSWg4NTREZytgNAcvFaT IK3l2fRCkQPyDD2Hz4Zsu8j3+ygSljewQzP484SfLz5HPxag9gg3Mre8FwziCHLOE1oJ 78e3K+2UUjYbQVJUl4AUywyzL2uMNP/KLtrELjQBW6vlZMGng2n0gcH/0vwzIVQ2SDZr 0gMdF2+58yoSIefo7o/kJ0VU7Kqcqb5alBDB14uZC4LF797rUozoJpyrf79WA1CDuglq xhXuOwNC7LfiOlsQsw4sIjbib50TmtBenyT70Fr2TDHLqEQE+TCF0E1VC2TJK2joaBvi EZ0A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=Niv4ry4Ht+sxGjnCxKmfDqaEVLiah3CqjMUhN/hOXN4=; b=nZcb6YZl0AreeWvQ4GFL/H76TbsvBPS3mSZieVzMSVhWhjzlai4qJjYzOGlB9zUuyI IQ8QmMHVhBVezFWWlYVtjTo+j9Y6vUlMcgyZI86MhpVpu84Cr90wRx8xNiNoSTLN/yiH F5c3D0OOM0pJZjh51du0kUpjhrBh++uuER8tg18PZzruNZzcJl8dI+EMHAcQL+6CbkWa fiiJVemjWTzp0S2SOf+1ZP+YoSPN232hOM5bAWrcZOrHoI1qeE5MkVRrPjrYoHHdGNBA 2HgTqPYdqU02TiNYqEqg+tkLwwq0t0jQ21LNakat1UbAf11lZ63axyaBv9A48KXGhraC yUsA== X-Gm-Message-State: APjAAAWGkFHb97tE/sPL0z9bseiuaiFKspm5qskJL8RFOrCPaVVNO8Yv LCN6TrZQyiLYgc+4/0NBmExIVQ== X-Google-Smtp-Source: APXvYqzQSQOhGP7mcMiQ7DvKUQT18m0jQ3nojdHhccG8hfEjkidGlZYv0Bcw8BWJit6QxZ1o//yPww== X-Received: by 2002:a1c:2dd1:: with SMTP id t200mr5046697wmt.148.1551953603357; Thu, 07 Mar 2019 02:13:23 -0800 (PST) Received: from srini-hackbox.lan (cpc89974-aztw32-2-0-cust43.18-1.cable.virginm.net. [86.30.250.44]) by smtp.gmail.com with ESMTPSA id n9sm3529767wmi.33.2019.03.07.02.13.22 (version=TLS1_2 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Thu, 07 Mar 2019 02:13:22 -0800 (PST) From: Srinivas Kandagatla To: gregkh@linuxfoundation.org, arnd@arndb.de Cc: linux-kernel@vger.kernel.org, bjorn.andersson@linaro.org, bkumar@qti.qualcomm.com, linux-arm-msm@vger.kernel.org, ktadakam@qti.qualcomm.com, Srinivas Kandagatla Subject: [PATCH 8/8] misc: fastrpc: increase max init file size to 64 MB Date: Thu, 7 Mar 2019 10:12:29 +0000 Message-Id: <20190307101229.7856-9-srinivas.kandagatla@linaro.org> X-Mailer: git-send-email 2.21.0 In-Reply-To: <20190307101229.7856-1-srinivas.kandagatla@linaro.org> References: <20190307101229.7856-1-srinivas.kandagatla@linaro.org> MIME-Version: 1.0 Sender: linux-arm-msm-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-arm-msm@vger.kernel.org X-Virus-Scanned: ClamAV using ClamSMTP In some cases where Neural Processing is required the size of init process exceeds default size of 2MB, increase this size to 64MB which is required for QCS404 CDSP Neural Processing. Signed-off-by: Srinivas Kandagatla --- drivers/misc/fastrpc.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/misc/fastrpc.c b/drivers/misc/fastrpc.c index d0e2e2620087..7e0d4528f3b9 100644 --- a/drivers/misc/fastrpc.c +++ b/drivers/misc/fastrpc.c @@ -32,7 +32,7 @@ #define FASTRPC_CTX_MAX (256) #define FASTRPC_INIT_HANDLE 1 #define FASTRPC_CTXID_MASK (0xFF0) -#define INIT_FILELEN_MAX (2 * 1024 * 1024) +#define INIT_FILELEN_MAX (64 * 1024 * 1024) #define INIT_MEMLEN_MAX (8 * 1024 * 1024) #define FASTRPC_DEVICE_NAME "fastrpc"