Received: by 2002:a25:1506:0:0:0:0:0 with SMTP id 6csp3284673ybv; Sun, 9 Feb 2020 19:56:38 -0800 (PST) X-Google-Smtp-Source: APXvYqznVK0wQRsV35Y9yaD+/yT0czT9DT9O0qQm7IuB5ItTGP7EXGX0mzMe5QHBsdNfKJBO1iJG X-Received: by 2002:aca:5258:: with SMTP id g85mr9755943oib.80.1581306998734; Sun, 09 Feb 2020 19:56:38 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1581306998; cv=none; d=google.com; s=arc-20160816; b=bAQH5eSZBEiMkATtb8xU8IKJytWHirN1DSWUvfyuEbXDXSvX0Qh14qe0BLCJaGnX1t fJwOANz8kZEnXXus5IAPpr/uHOxe2+dOJ/BvDeyuqOLMt6CboMi7+6gUNJ6EweMLphJh mcGcX/2PiLUxgoY4eFQVIvAPoxBmXnapazKQW3tnwLGBG0e98/sBX5xzXTXXz5Qh2Ckr plWh374shjHlVOKi0GxaAtcdSJy+ro1cZ3+MNiPrgCLZj2h9u7UclTx41z76pvyTjtSF hvP3039q4WcN5ynnAmsjMR0a/VdCW1btqUREQElTGucAq/sp9cB4WXCSTM31VZ2c+WJO 3keA== 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:dkim-signature; bh=XGTENEjJ0+z+1EMrz+JrOfyO1gcPOMBNtUwze/u53KI=; b=DwmYs5vTsApJZhVdcZqwdWnNpgJyOqvL7/cHQcBKidpIify9bz2yk0QXGKiU6BayTb WMX18VWyi0RpJQXexJXPzuNVeWOWkF129jBLZHPzQ9AEfeWoFujDTW2KXp3SxceaPkTJ 2S0SIKFh6XAAUD//UNAakhj9pH/cWAbz4LUJQtwpFawKaXrCMN+vJg2Ogkryt5clkq0S d+XfhQ0QKJEXdAmglH7sZCEMLCfaHHRDQypuxBGTRDMP7L8g7S+AsP0xAH3yIy1hdv9N eJv+FmpofkURREG7h21TFKZYwkTWLbrqb21ho9XK6KR6lyKrANuzDJIZpz2lW5a6b2JK XwKQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@chromium.org header.s=google header.b=He3CPtJv; 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; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=chromium.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id l10si4236028oth.243.2020.02.09.19.56.26; Sun, 09 Feb 2020 19:56:38 -0800 (PST) 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; dkim=pass header.i=@chromium.org header.s=google header.b=He3CPtJv; 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; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=chromium.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1727417AbgBJDyK (ORCPT + 99 others); Sun, 9 Feb 2020 22:54:10 -0500 Received: from mail-pj1-f68.google.com ([209.85.216.68]:51797 "EHLO mail-pj1-f68.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726944AbgBJDyJ (ORCPT ); Sun, 9 Feb 2020 22:54:09 -0500 Received: by mail-pj1-f68.google.com with SMTP id fa20so3595686pjb.1 for ; Sun, 09 Feb 2020 19:54:09 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=chromium.org; s=google; h=from:to:cc:subject:date:message-id:mime-version :content-transfer-encoding; bh=XGTENEjJ0+z+1EMrz+JrOfyO1gcPOMBNtUwze/u53KI=; b=He3CPtJv9IthCFqDIfd5GI3rJaw5+1kbpKBDyO7Wh+3kXUrMjKjh0CrcU+HW+xzZCr miz1L40jFvrEay6sQy8PjEMqFuo9NyFaimnfRq1NeGccaMAhHQcmx/siFCBt7B0SexUk /PZeCvkoEg7mEk1YNJcZ5d4a0eFn7hI/WNdyo= 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:mime-version :content-transfer-encoding; bh=XGTENEjJ0+z+1EMrz+JrOfyO1gcPOMBNtUwze/u53KI=; b=J5+ZitjO0itPcbtMxJP8pOp74cr4pxnjCjF6yWEOqV+q4+EpCKLZWD2OH7EGyVT25+ ulTAOn98Z2BMj6ClfaRYKob21EeQ2pPGHs8MOJu3E/U39wjNCB0xgPnAbK0am83Mv9hY 5qnxQ9WjZDWa+44QwmZDMpoWdYqARXO7hNprl8JOzs8tMXVNkzpYpHpajRrzfvAlEIrs s3XNS0psADp/tVDHZ1Fc+UmrGTruMWHcDBLU3xoQ7LItBFXeW3OG2I0WcPajds02U+vM Y9U7AP7DGvMRD+2LpHOENdcKoJ15SMRDSZx1DZ7MgY5bYIrR6N4qbVViOI5/wwbKRJGn BbBw== X-Gm-Message-State: APjAAAXNsRI37Rqtn9OTUotdkhkR7VXffrNF3o50hvlAlptKPWkC/jF+ YLoyMwOkFgQk4qHRe1oL6EJ6+A== X-Received: by 2002:a17:902:567:: with SMTP id 94mr10741617plf.174.1581306848902; Sun, 09 Feb 2020 19:54:08 -0800 (PST) Received: from hsinyi-z840.tpe.corp.google.com ([2401:fa00:1:10:b852:bd51:9305:4261]) by smtp.gmail.com with ESMTPSA id c26sm10568151pfj.8.2020.02.09.19.54.06 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 09 Feb 2020 19:54:08 -0800 (PST) From: Hsin-Yi Wang To: linux-arm-kernel@lists.infradead.org Cc: Minghsiu Tsai , Houlong Wei , Andrew-CT Chen , Tiffany Lin , Mauro Carvalho Chehab , Matthias Brugger , Enric Balletbo i Serra , Hans Verkuil , linux-media@vger.kernel.org, linux-mediatek@lists.infradead.org, linux-kernel@vger.kernel.org Subject: [PATCH] media: mtk-vpu: avoid unaligned access to DTCM buffer. Date: Mon, 10 Feb 2020 11:53:52 +0800 Message-Id: <20200210035351.227499-1-hsinyi@chromium.org> X-Mailer: git-send-email 2.25.0.225.g125e21ebc7-goog MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org struct vpu_run *run in vpu_init_ipi_handler() is an ioremapped DTCM (Data Tightly Coupled Memory) buffer shared with AP. It's not able to do unaligned access. Otherwise kernel would crash due to unable to handle kernel paging request. struct vpu_run { u32 signaled; char fw_ver[VPU_FW_VER_LEN]; unsigned int dec_capability; unsigned int enc_capability; wait_queue_head_t wq; }; fw_ver starts at 4 byte boundary. If system enables CONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS, strscpy() will do read_word_at_a_time(), which tries to read 8-byte: *(unsigned long *)addr Copy the string by memcpy_fromio() for this buffer to avoid unaligned access. Fixes: 85709cbf1524 ("media: replace strncpy() by strscpy()") Signed-off-by: Hsin-Yi Wang --- drivers/media/platform/mtk-vpu/mtk_vpu.c | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/drivers/media/platform/mtk-vpu/mtk_vpu.c b/drivers/media/platform/mtk-vpu/mtk_vpu.c index a768707abb94..e705e85d6f5a 100644 --- a/drivers/media/platform/mtk-vpu/mtk_vpu.c +++ b/drivers/media/platform/mtk-vpu/mtk_vpu.c @@ -600,13 +600,16 @@ int vpu_load_firmware(struct platform_device *pdev) } EXPORT_SYMBOL_GPL(vpu_load_firmware); -static void vpu_init_ipi_handler(void *data, unsigned int len, void *priv) +static void vpu_init_ipi_handler(void __iomem *data, unsigned int len, + void *priv) { struct mtk_vpu *vpu = (struct mtk_vpu *)priv; - struct vpu_run *run = (struct vpu_run *)data; + struct vpu_run __iomem *run = data; vpu->run.signaled = run->signaled; - strscpy(vpu->run.fw_ver, run->fw_ver, sizeof(vpu->run.fw_ver)); + memcpy_fromio(vpu->run.fw_ver, run->fw_ver, sizeof(vpu->run.fw_ver)); + /* Make sure the string is NUL-terminated */ + vpu->run.fw_ver[sizeof(vpu->run.fw_ver) - 1] = '\0'; vpu->run.dec_capability = run->dec_capability; vpu->run.enc_capability = run->enc_capability; wake_up_interruptible(&vpu->run.wq); -- 2.25.0.225.g125e21ebc7-goog