From patchwork Wed Nov 11 13:11:38 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jason Wang X-Patchwork-Id: 322926 Delivered-To: patch@linaro.org Received: by 2002:a17:906:d156:0:0:0:0 with SMTP id br22csp662810ejb; Wed, 11 Nov 2020 05:32:14 -0800 (PST) X-Google-Smtp-Source: ABdhPJxi7vk1aBCkR4uoTgztHespbkvBkhLMkiJZvhBaHtIwhbYa5CE5Bymd5F2EbTFDAyqrPOCW X-Received: by 2002:a25:888a:: with SMTP id d10mr34535661ybl.406.1605101534227; Wed, 11 Nov 2020 05:32:14 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1605101534; cv=none; d=google.com; s=arc-20160816; b=wiUPFGI5JWMOMs7qtGSa9fq4Sci9ZnLoCpDMJWksPADiB+kV2smtETYCNPlF7/WlOq tPoXrC3QXlSrR4BtfLD2X/Inj+kpnx2pIuV7uHoxCRaPKjrIcEnIgBQy5kEdUuk/rCGP BA7BR5uHfgRbBa+XYR7PqFwqfs1oeTE9oALhYNVXSynOwWM0F/bFUodhVzkUm0blQn2N jh+stUbVgOWSgNxr58roUKOys7tO/qtpMaRcHexdazK82r2l676Ph1PYKeYXx86CSaNv 0BeiOPxRIiThVhBTppY/5qvxMA3S7rwbscfdttENRypRsqS9VTnYenY8gnOu7HLpRHAH iUJQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:cc:list-subscribe:list-help:list-post:list-archive :list-unsubscribe:list-id:precedence:references:in-reply-to :message-id:date:subject:to:from:dkim-signature; bh=FZNuZNSALLZhBLBMem6DriO7AmdJ8F3r0mh6HWNNVcw=; b=0G4NEkzhpRVzUiySZ7EvNQsHk8bFkmewPzS4CyIk2+H7eDxOatE3UThvPyRrJKD5Lk toKJYJQ1h+j0RphWyB3Fc4gqwXD0p5H8vonPowomQvV4GUuZVaztFGarXSwEvXew16eA /mpwF07O8XbFrmcY0Dw1MKzQsQu+IcGMt26iznqy4xzLICmiDXzZls1QlTxrswF6hxwo s8QqbUCu/WkExJQGnJS6EfqU4G9goP0HH8qI3zZaAHThGrfjVD4hTVbKPZfYOqyT/qKS f/Lgy67kekJTicuMP4vYFL/ZKDwcds3zc2XfJ5ZB6C0qZAqlLeijJ6jYSuXoFO650C11 qyig== ARC-Authentication-Results: i=1; mx.google.com; dkim=fail header.i=@redhat.com header.s=mimecast20190719 header.b=Iuhb7pHC; spf=pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom="qemu-devel-bounces+patch=linaro.org@nongnu.org"; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=redhat.com Return-Path: Received: from lists.gnu.org (lists.gnu.org. [209.51.188.17]) by mx.google.com with ESMTPS id i13si2072473ybp.288.2020.11.11.05.32.14 for (version=TLS1_2 cipher=ECDHE-ECDSA-CHACHA20-POLY1305 bits=256/256); Wed, 11 Nov 2020 05:32:14 -0800 (PST) Received-SPF: pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; Authentication-Results: mx.google.com; dkim=fail header.i=@redhat.com header.s=mimecast20190719 header.b=Iuhb7pHC; spf=pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom="qemu-devel-bounces+patch=linaro.org@nongnu.org"; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=redhat.com Received: from localhost ([::1]:48416 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1kcqEP-0001C5-LM for patch@linaro.org; Wed, 11 Nov 2020 08:32:13 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]:44630) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1kcpvG-0007K6-Nf for qemu-devel@nongnu.org; Wed, 11 Nov 2020 08:12:26 -0500 Received: from us-smtp-delivery-124.mimecast.com ([63.128.21.124]:27927) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA1:256) (Exim 4.90_1) (envelope-from ) id 1kcpvE-0002FU-Pn for qemu-devel@nongnu.org; Wed, 11 Nov 2020 08:12:26 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1605100344; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:content-type:content-type:in-reply-to:in-reply-to: references:references; bh=FZNuZNSALLZhBLBMem6DriO7AmdJ8F3r0mh6HWNNVcw=; b=Iuhb7pHCgvYvD512CpbBSY8Go7QNjg4HWAS/5ZwY7xl1tEVXv8+7f1QYDbrjEzKH2ybEn8 RB0Bvxp4/H97ZHP6KD2/N4uiBj/XrU6TuZqboopmxj0c2VhiECHZasexvAcFUfbgbVCgGP lXaqc3n0XEnCRGIPkRK7xIUiC8U0VCg= Received: from mimecast-mx01.redhat.com (mimecast-mx01.redhat.com [209.132.183.4]) (Using TLS) by relay.mimecast.com with ESMTP id us-mta-224-VvpyrAUtOb2sCoLS4f2IVw-1; Wed, 11 Nov 2020 08:12:19 -0500 X-MC-Unique: VvpyrAUtOb2sCoLS4f2IVw-1 Received: from smtp.corp.redhat.com (int-mx05.intmail.prod.int.phx2.redhat.com [10.5.11.15]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx01.redhat.com (Postfix) with ESMTPS id CECFD64081; Wed, 11 Nov 2020 13:12:18 +0000 (UTC) Received: from jason-ThinkPad-T430s.redhat.com (ovpn-12-61.pek2.redhat.com [10.72.12.61]) by smtp.corp.redhat.com (Postfix) with ESMTP id 3BF1555760; Wed, 11 Nov 2020 13:12:16 +0000 (UTC) From: Jason Wang To: qemu-devel@nongnu.org, peter.maydell@linaro.org Subject: [PULL 14/17] hw/net/can/ctucan: Don't allow guest to write off end of tx_buffer Date: Wed, 11 Nov 2020 21:11:38 +0800 Message-Id: <1605100301-11317-15-git-send-email-jasowang@redhat.com> In-Reply-To: <1605100301-11317-1-git-send-email-jasowang@redhat.com> References: <1605100301-11317-1-git-send-email-jasowang@redhat.com> X-Scanned-By: MIMEDefang 2.79 on 10.5.11.15 Authentication-Results: relay.mimecast.com; auth=pass smtp.auth=CUSA124A263 smtp.mailfrom=jasowang@redhat.com X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Received-SPF: pass client-ip=63.128.21.124; envelope-from=jasowang@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-detected-operating-system: by eggs.gnu.org: First seen = 2020/11/11 01:42:46 X-ACL-Warn: Detected OS = Linux 2.2.x-3.x [generic] [fuzzy] X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H5=0.001, RCVD_IN_MSPIKE_WL=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Jason Wang , Pavel Pisa Errors-To: qemu-devel-bounces+patch=linaro.org@nongnu.org Sender: "Qemu-devel" From: Peter Maydell The ctucan device has 4 CAN bus cores, each of which has a set of 20 32-bit registers for writing the transmitted data. The registers are however not contiguous; each core's buffers is 0x100 bytes after the last. We got the checks on the address wrong in the ctucan_mem_write() function: * the first "is addr in range at all" check allowed addr == CTUCAN_CORE_MEM_SIZE, which is actually the first byte off the end of the range * the decode of addresses into core-number plus offset in the tx buffer for that core failed to check that the offset was in range, so the guest could write off the end of the tx_buffer[] array NB: currently the values of CTUCAN_CORE_MEM_SIZE, CTUCAN_CORE_TXBUF_NUM, etc, make "buff_num >= CTUCAN_CORE_TXBUF_NUM" impossible, but we retain this as a runtime check rather than an assertion to permit those values to be changed in future (in hardware they are configurable synthesis parameters). Fix the top level check, and check the offset is within the buffer. Fixes: Coverity CID 1432874 Signed-off-by: Peter Maydell Signed-off-by: Pavel Pisa Tested-by: Pavel Pisa Signed-off-by: Jason Wang --- hw/net/can/ctucan_core.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) -- 2.7.4 diff --git a/hw/net/can/ctucan_core.c b/hw/net/can/ctucan_core.c index d20835c..8486f42 100644 --- a/hw/net/can/ctucan_core.c +++ b/hw/net/can/ctucan_core.c @@ -303,7 +303,7 @@ void ctucan_mem_write(CtuCanCoreState *s, hwaddr addr, uint64_t val, DPRINTF("write 0x%02llx addr 0x%02x\n", (unsigned long long)val, (unsigned int)addr); - if (addr > CTUCAN_CORE_MEM_SIZE) { + if (addr >= CTUCAN_CORE_MEM_SIZE) { return; } @@ -312,7 +312,9 @@ void ctucan_mem_write(CtuCanCoreState *s, hwaddr addr, uint64_t val, addr -= CTU_CAN_FD_TXTB1_DATA_1; buff_num = addr / CTUCAN_CORE_TXBUFF_SPAN; addr %= CTUCAN_CORE_TXBUFF_SPAN; - if (buff_num < CTUCAN_CORE_TXBUF_NUM) { + addr &= ~3; + if ((buff_num < CTUCAN_CORE_TXBUF_NUM) && + (addr < sizeof(s->tx_buffer[buff_num].data))) { uint32_t *bufp = (uint32_t *)(s->tx_buffer[buff_num].data + addr); *bufp = cpu_to_le32(val); } From patchwork Wed Nov 11 13:11:39 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jason Wang X-Patchwork-Id: 322924 Delivered-To: patch@linaro.org Received: by 2002:a05:6e02:5ce:0:0:0:0 with SMTP id l14csp390950ils; Wed, 11 Nov 2020 05:30:08 -0800 (PST) X-Google-Smtp-Source: ABdhPJwerXnS1aloveG96PR+1kQLLdtMWUNxZaOe8ppBcfT6JGwejc1+PfMj1atan0+Ysza9ebtb X-Received: by 2002:a25:a481:: with SMTP id g1mr33060115ybi.319.1605101408524; Wed, 11 Nov 2020 05:30:08 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1605101408; cv=none; d=google.com; s=arc-20160816; b=hqbX+A1XaIRZSUKutaD12fpAHayq7HeO1oFpGnEOiBBRQu5ASrSeFpXxS0a5uTaEXm ZWd0JXqRhsmzlWyXuMoOPNo30VB8nz1Ca9uxY3XxeHU8P1H89iMOI4E3kKom1B1Y20HR ghtHX3zw7htBLFmbBS7upgE/md+lGY3VXmpqvQYnNNX9ifPkZL6FgjWLWDDfnGUz9xmi SE48byULKNZ099OmPPjbbeUAztFD/ao1lYRlq19oIPOoVlVKLyfFEy83uHTsSVJ+DcEt lI7TADCHRzoFYtr77rX77ZLLe7qGL3WXn16SiGRa7s8Ck+M0mFJm6KD9Xi7CKsYp2nt6 Ssuw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:cc:list-subscribe:list-help:list-post:list-archive :list-unsubscribe:list-id:precedence:references:in-reply-to :message-id:date:subject:to:from:dkim-signature; bh=HEguIJXVsjbU2EJs7LzNyarOp7zgAEN0BuNJ/Q6EjJE=; b=z03VfCxCC+/82YB9HaZw9Bla+8ct5+8bgvqNf5Vz6v259Y2F243omN8K7rMPirThjY h817TbwhSfj6kPJD9v8H52kgDE3nyd1rvP3LGy1/uwQ59Lplq0k1THDfPFnMyhprxenY UDULFI+qiv6dBuZIDIg6DE/GIpmFQMtNIbfEHG9oemjamSirWM+oE+gEv8k4pJ5aMUH8 DqSeDedYUPLugE+FaY9lR2zYbl+golyCPsdYjCSGrcj0P3/NjnOGzwILf1XjShvh218A A4pFPBk/bzHwsSatjWoA04qcSN7JtGP9Eq0M4vQcaStsxQFGw0RCkWzb480zc2L4chAK pG1A== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@redhat.com header.s=mimecast20190719 header.b=JUqCsVPP; spf=pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom="qemu-devel-bounces+patch=linaro.org@nongnu.org"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=redhat.com Return-Path: Received: from lists.gnu.org (lists.gnu.org. [209.51.188.17]) by mx.google.com with ESMTPS id u82si1981795ybb.185.2020.11.11.05.30.08 for (version=TLS1_2 cipher=ECDHE-ECDSA-CHACHA20-POLY1305 bits=256/256); Wed, 11 Nov 2020 05:30:08 -0800 (PST) Received-SPF: pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; Authentication-Results: mx.google.com; dkim=pass header.i=@redhat.com header.s=mimecast20190719 header.b=JUqCsVPP; spf=pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom="qemu-devel-bounces+patch=linaro.org@nongnu.org"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=redhat.com Received: from localhost ([::1]:41920 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1kcqCO-0006oe-05 for patch@linaro.org; Wed, 11 Nov 2020 08:30:08 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]:44636) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1kcpvG-0007Kg-WD for qemu-devel@nongnu.org; Wed, 11 Nov 2020 08:12:27 -0500 Received: from us-smtp-delivery-124.mimecast.com ([216.205.24.124]:37976) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA1:256) (Exim 4.90_1) (envelope-from ) id 1kcpvE-0002Fv-VH for qemu-devel@nongnu.org; Wed, 11 Nov 2020 08:12:26 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1605100344; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:content-type:content-type:in-reply-to:in-reply-to: references:references; bh=HEguIJXVsjbU2EJs7LzNyarOp7zgAEN0BuNJ/Q6EjJE=; b=JUqCsVPPibdq3SqWHLd1UlCiUrZw6uZFFwUYCAfktvh6JUb7xZCrza4KgGCg9mrGcX0JY8 DcjP1ptBsyjXGzd3sUxgIFy7NnN54brpdXCoFkMUeauYmQ6atw+vYwpBWPlark4LftkShB 3/jO+md4Shwce0JAx6cdx5PibYhbymg= Received: from mimecast-mx01.redhat.com (mimecast-mx01.redhat.com [209.132.183.4]) (Using TLS) by relay.mimecast.com with ESMTP id us-mta-493-iS34KW1RNgqTh5GIAKX4vg-1; Wed, 11 Nov 2020 08:12:22 -0500 X-MC-Unique: iS34KW1RNgqTh5GIAKX4vg-1 Received: from smtp.corp.redhat.com (int-mx05.intmail.prod.int.phx2.redhat.com [10.5.11.15]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx01.redhat.com (Postfix) with ESMTPS id AB3351009443; Wed, 11 Nov 2020 13:12:20 +0000 (UTC) Received: from jason-ThinkPad-T430s.redhat.com (ovpn-12-61.pek2.redhat.com [10.72.12.61]) by smtp.corp.redhat.com (Postfix) with ESMTP id 58EA375139; Wed, 11 Nov 2020 13:12:19 +0000 (UTC) From: Jason Wang To: qemu-devel@nongnu.org, peter.maydell@linaro.org Subject: [PULL 15/17] hw/net/can/ctucan: Avoid unused value in ctucan_send_ready_buffers() Date: Wed, 11 Nov 2020 21:11:39 +0800 Message-Id: <1605100301-11317-16-git-send-email-jasowang@redhat.com> In-Reply-To: <1605100301-11317-1-git-send-email-jasowang@redhat.com> References: <1605100301-11317-1-git-send-email-jasowang@redhat.com> X-Scanned-By: MIMEDefang 2.79 on 10.5.11.15 Authentication-Results: relay.mimecast.com; auth=pass smtp.auth=CUSA124A263 smtp.mailfrom=jasowang@redhat.com X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Received-SPF: pass client-ip=216.205.24.124; envelope-from=jasowang@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-detected-operating-system: by eggs.gnu.org: First seen = 2020/11/11 01:49:01 X-ACL-Warn: Detected OS = Linux 2.2.x-3.x [generic] [fuzzy] X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H4=0.001, RCVD_IN_MSPIKE_WL=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Jason Wang Errors-To: qemu-devel-bounces+patch=linaro.org@nongnu.org Sender: "Qemu-devel" From: Peter Maydell Coverity points out that in ctucan_send_ready_buffers() we set buff_st_mask = 0xf << (i * 4) inside the loop, but then we never use it before overwriting it later. The only thing we use the mask for is as part of the code that is inserting the new buff_st field into tx_status. That is more comprehensibly written using deposit32(), so do that and drop the mask variable entirely. We also update the buff_st local variable at multiple points during this function, but nothing can ever see these intermediate values, so just drop those, write the final TXT_TOK as a fixed constant value, and collapse the only remaining set/use of buff_st down into an extract32(). Fixes: Coverity CID 1432869 Signed-off-by: Peter Maydell Acked-by: Pavel Pisa Tested-by: Pavel Pisa Signed-off-by: Jason Wang --- hw/net/can/ctucan_core.c | 15 +++------------ 1 file changed, 3 insertions(+), 12 deletions(-) -- 2.7.4 diff --git a/hw/net/can/ctucan_core.c b/hw/net/can/ctucan_core.c index 8486f42..f49c762 100644 --- a/hw/net/can/ctucan_core.c +++ b/hw/net/can/ctucan_core.c @@ -240,8 +240,6 @@ static void ctucan_send_ready_buffers(CtuCanCoreState *s) uint8_t *pf; int buff2tx_idx; uint32_t tx_prio_max; - unsigned int buff_st; - uint32_t buff_st_mask; if (!s->mode_settings.s.ena) { return; @@ -256,10 +254,7 @@ static void ctucan_send_ready_buffers(CtuCanCoreState *s) for (i = 0; i < CTUCAN_CORE_TXBUF_NUM; i++) { uint32_t prio; - buff_st_mask = 0xf << (i * 4); - buff_st = (s->tx_status.u32 >> (i * 4)) & 0xf; - - if (buff_st != TXT_RDY) { + if (extract32(s->tx_status.u32, i * 4, 4) != TXT_RDY) { continue; } prio = (s->tx_priority.u32 >> (i * 4)) & 0x7; @@ -271,10 +266,7 @@ static void ctucan_send_ready_buffers(CtuCanCoreState *s) if (buff2tx_idx == -1) { break; } - buff_st_mask = 0xf << (buff2tx_idx * 4); - buff_st = (s->tx_status.u32 >> (buff2tx_idx * 4)) & 0xf; int_stat.u32 = 0; - buff_st = TXT_RDY; pf = s->tx_buffer[buff2tx_idx].data; ctucan_buff2frame(pf, &frame); s->status.s.idle = 0; @@ -283,12 +275,11 @@ static void ctucan_send_ready_buffers(CtuCanCoreState *s) s->status.s.idle = 1; s->status.s.txs = 0; s->tx_fr_ctr.s.tx_fr_ctr_val++; - buff_st = TXT_TOK; int_stat.s.txi = 1; int_stat.s.txbhci = 1; s->int_stat.u32 |= int_stat.u32 & ~s->int_mask.u32; - s->tx_status.u32 = (s->tx_status.u32 & ~buff_st_mask) | - (buff_st << (buff2tx_idx * 4)); + s->tx_status.u32 = deposit32(s->tx_status.u32, + buff2tx_idx * 4, 4, TXT_TOK); } while (1); } From patchwork Wed Nov 11 13:11:40 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Jason Wang X-Patchwork-Id: 322923 Delivered-To: patch@linaro.org Received: by 2002:a05:6e02:5ce:0:0:0:0 with SMTP id l14csp389019ils; Wed, 11 Nov 2020 05:27:10 -0800 (PST) X-Google-Smtp-Source: ABdhPJwhNR/MeTVVovy3cLH6rVVY2hkkfiNweomkSXBOLPRviMc2kKSWB7y6jo5xqqXPXZ/11so0 X-Received: by 2002:a25:57d6:: with SMTP id l205mr33009160ybb.117.1605101230127; Wed, 11 Nov 2020 05:27:10 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1605101230; cv=none; d=google.com; s=arc-20160816; b=YHjtKi2EcO9Ap38+LUw3gJByDgGh2zuNSJRp1CfmqXqGzzQiof4Qwq62jOgZYk2ZpJ 4PSLqlYxWZDWf3vL1mnYKwi7EctmhjO79nJE5SnbVKDsj4AkZ50ay4PKCHXaGDsN223T 0MW9UzCH36C3k+lfmhiPckko26ujeWZbCy0PGyU8A5LIrngDEVDQJO3XaEIvKyBfUxLC lLyc/MLn3g59S7SYOc1PR0fLmLhvPUq2oiwYbiU77qXcY9Y9iwYRGpP5UJ0K3391EiO8 BigA3DifgnUcy4G5UHcw38NVPNQSYKAjvCR41lg2e60TI8ttWZmzRvngh76BcQV1avvC aBBw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:cc:list-subscribe:list-help:list-post:list-archive :list-unsubscribe:list-id:precedence:content-transfer-encoding :mime-version:references:in-reply-to:message-id:date:subject:to:from :dkim-signature; bh=0tRk+VsAm5cXSsSJkpxworVPoJ+oOeYmX9krht8arW8=; b=yK3Hvucl6LfZFLngu+VAI4P3GxQ3TaAfRJu1X7BYstojNo5bvzQh4BVMjg9XDayQOY UM3VF7U9s5N2qFkzyEkZxw0Eo4f1zkouFBY2XQrjkFwwD1jnRahnMFIkz1Sni0wsXI7e 8a979IAJlLOPkBU5Oq2BGG6BUTxga+16PIrm5jQkVePSzdncq/6RKJ5wrFnQ/w7L/1vh 8X+py4TYNBtPXRtLgnIDfzL+HFw0kLUdZ0WNzoWcROhBirixypWRWCysVv2WA+pD6Xx2 lV97tnrBStZlaFxrgQm3wd4FZyElLY8CK9tet9B9Hlk+25l50fEIALh+B3GGckukO1HU j7dw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@redhat.com header.s=mimecast20190719 header.b=S0m1BOS8; spf=pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom="qemu-devel-bounces+patch=linaro.org@nongnu.org"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=redhat.com Return-Path: Received: from lists.gnu.org (lists.gnu.org. [209.51.188.17]) by mx.google.com with ESMTPS id w9si1931097ybk.401.2020.11.11.05.27.10 for (version=TLS1_2 cipher=ECDHE-ECDSA-CHACHA20-POLY1305 bits=256/256); Wed, 11 Nov 2020 05:27:10 -0800 (PST) Received-SPF: pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; Authentication-Results: mx.google.com; dkim=pass header.i=@redhat.com header.s=mimecast20190719 header.b=S0m1BOS8; spf=pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom="qemu-devel-bounces+patch=linaro.org@nongnu.org"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=redhat.com Received: from localhost ([::1]:34928 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1kcq9V-0003qH-Ki for patch@linaro.org; Wed, 11 Nov 2020 08:27:09 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]:44654) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1kcpvJ-0007N7-Dx for qemu-devel@nongnu.org; Wed, 11 Nov 2020 08:12:30 -0500 Received: from us-smtp-delivery-124.mimecast.com ([63.128.21.124]:58902) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA1:256) (Exim 4.90_1) (envelope-from ) id 1kcpvG-0002GS-7n for qemu-devel@nongnu.org; Wed, 11 Nov 2020 08:12:29 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1605100345; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=0tRk+VsAm5cXSsSJkpxworVPoJ+oOeYmX9krht8arW8=; b=S0m1BOS8ElXD2wxtKFQhFPoZf7rJahApcD6czacSeVZTCjtZT1ptm7N0VZvMEPX9xa8DZB k4Fzaydw0oLQq7S0miqBUIqMtasgqw6BfLAHbZBEmlbbHnat8cmpOtVI+DP+3lGwRYBd8i iFOHAVE9lfdAWJYPLdEjzADOVlOd5ck= Received: from mimecast-mx01.redhat.com (mimecast-mx01.redhat.com [209.132.183.4]) (Using TLS) by relay.mimecast.com with ESMTP id us-mta-554-k9mv4xeLMUuJrXZYnkUKFw-1; Wed, 11 Nov 2020 08:12:23 -0500 X-MC-Unique: k9mv4xeLMUuJrXZYnkUKFw-1 Received: from smtp.corp.redhat.com (int-mx05.intmail.prod.int.phx2.redhat.com [10.5.11.15]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx01.redhat.com (Postfix) with ESMTPS id 8701C1087D63; Wed, 11 Nov 2020 13:12:22 +0000 (UTC) Received: from jason-ThinkPad-T430s.redhat.com (ovpn-12-61.pek2.redhat.com [10.72.12.61]) by smtp.corp.redhat.com (Postfix) with ESMTP id 3411D55760; Wed, 11 Nov 2020 13:12:20 +0000 (UTC) From: Jason Wang To: qemu-devel@nongnu.org, peter.maydell@linaro.org Subject: [PULL 16/17] hw/net/can/ctucan_core: Handle big-endian hosts Date: Wed, 11 Nov 2020 21:11:40 +0800 Message-Id: <1605100301-11317-17-git-send-email-jasowang@redhat.com> In-Reply-To: <1605100301-11317-1-git-send-email-jasowang@redhat.com> References: <1605100301-11317-1-git-send-email-jasowang@redhat.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.79 on 10.5.11.15 Authentication-Results: relay.mimecast.com; auth=pass smtp.auth=CUSA124A263 smtp.mailfrom=jasowang@redhat.com X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Received-SPF: pass client-ip=63.128.21.124; envelope-from=jasowang@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-detected-operating-system: by eggs.gnu.org: First seen = 2020/11/11 01:42:46 X-ACL-Warn: Detected OS = Linux 2.2.x-3.x [generic] [fuzzy] X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H5=0.001, RCVD_IN_MSPIKE_WL=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Jason Wang Errors-To: qemu-devel-bounces+patch=linaro.org@nongnu.org Sender: "Qemu-devel" From: Peter Maydell The ctucan driver defines types for its registers which are a union of a uint32_t with a struct with bitfields for the individual fields within that register. This is a bad idea, because bitfields aren't portable. The ctu_can_fd_regs.h header works around the most glaring of the portability issues by defining the fields in two different orders depending on the setting of the __LITTLE_ENDIAN_BITFIELD define. However, in ctucan_core.h this is unconditionally set to 1, which is wrong for big-endian hosts. Set it only if HOST_WORDS_BIGENDIAN is not set. There is no need for a "have we defined it already" guard, because the only place that should set it is ctucan_core.h, which has the usual double-inclusion guard. Signed-off-by: Peter Maydell Reviewed-by: Philippe Mathieu-Daudé Acked-by: Pavel Pisa Tested-by: Pavel Pisa Signed-off-by: Jason Wang --- hw/net/can/ctucan_core.h | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) -- 2.7.4 diff --git a/hw/net/can/ctucan_core.h b/hw/net/can/ctucan_core.h index f21cb1c..bbc09ae 100644 --- a/hw/net/can/ctucan_core.h +++ b/hw/net/can/ctucan_core.h @@ -31,8 +31,7 @@ #include "exec/hwaddr.h" #include "net/can_emu.h" - -#ifndef __LITTLE_ENDIAN_BITFIELD +#ifndef HOST_WORDS_BIGENDIAN #define __LITTLE_ENDIAN_BITFIELD 1 #endif From patchwork Wed Nov 11 13:11:41 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Jason Wang X-Patchwork-Id: 322925 Delivered-To: patch@linaro.org Received: by 2002:a17:906:d156:0:0:0:0 with SMTP id br22csp662775ejb; Wed, 11 Nov 2020 05:32:12 -0800 (PST) X-Google-Smtp-Source: ABdhPJzvndUBTCdre5EGmW1Qh0vL5QnAztMANK5W7JDNEeIpK97YylexoxvaSiES3BxgcAr5lh3z X-Received: by 2002:a25:493:: with SMTP id 141mr17815805ybe.104.1605101532361; Wed, 11 Nov 2020 05:32:12 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1605101532; cv=none; d=google.com; s=arc-20160816; b=Gd+fGmsNrFThLTG1QH5WBcIr7F+7POG9r4gzhBeXHjMC+tFLQRJJsG5mjJZrfBwNiO eay+4jC9ghuwriHAl8wwWaV0es3qLAnrNyJhjHUVEuLe0ND9Yv9wR3mi0mPgbRG0lDir 9RFA2VMTC65ynzMuq4G2t7e9t3GrpZrlPHxN0s1svyX/5F5yNs8AzW8V+fYzC/E7TW9E dRGHANucy0jqswBZF06ARjUCKGLgGvcsfMQeJmBlpoqk2IHNSLVT/JEStb3orgcbewrb drk+LLKRg61taTpkkhlauf3M26Ssc4FThPI0Oe5f+xoJYTLmIZ8sqviROE2Sjg6hGql/ XXOw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:cc:list-subscribe:list-help:list-post:list-archive :list-unsubscribe:list-id:precedence:content-transfer-encoding :mime-version:references:in-reply-to:message-id:date:subject:to:from :dkim-signature; bh=bhHctUgBLKeuQGVfGwsPAFIarLfy5Zp2GRSCj1/r2pk=; b=eBFXHKjbleBOmEMOOer9uUQifAVn0nEMcjjUtQjLdyXTIaMAfjMvcUXgejzwelXohi eqGLM9U+ZUQMDhT6djRn5HlOPGCWbjRquCK2IigDBLg7xsHvyh46krU9TYklPVTk1Tly Dfu/bjoEDnept8K2g8xgEaCXrIO01Ji4cNa6kGV85Zw8TqaI0LNWghEX6NH+DiW1KPon pZVg0oKYwL54ANrvM3/nWh6gwOnUK1XAw5hKE0Eew8XW8OoCSyDSjlII9ZUKEgXNO7rU 0bokZQ0f5gxwE+6DpoeJsMu8ltcDCNOzw7hLdTjXmGXbuz+PKbaHBBEfpJweLTL1SAEb 5jUA== ARC-Authentication-Results: i=1; mx.google.com; dkim=fail header.i=@redhat.com header.s=mimecast20190719 header.b=E9pQgFY7; spf=pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom="qemu-devel-bounces+patch=linaro.org@nongnu.org"; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=redhat.com Return-Path: Received: from lists.gnu.org (lists.gnu.org. [209.51.188.17]) by mx.google.com with ESMTPS id q9si1781967ybc.186.2020.11.11.05.32.12 for (version=TLS1_2 cipher=ECDHE-ECDSA-CHACHA20-POLY1305 bits=256/256); Wed, 11 Nov 2020 05:32:12 -0800 (PST) Received-SPF: pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; Authentication-Results: mx.google.com; dkim=fail header.i=@redhat.com header.s=mimecast20190719 header.b=E9pQgFY7; spf=pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom="qemu-devel-bounces+patch=linaro.org@nongnu.org"; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=redhat.com Received: from localhost ([::1]:48288 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1kcqEN-00018l-P3 for patch@linaro.org; Wed, 11 Nov 2020 08:32:11 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]:44658) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1kcpvK-0007Nn-VI for qemu-devel@nongnu.org; Wed, 11 Nov 2020 08:12:30 -0500 Received: from us-smtp-delivery-124.mimecast.com ([216.205.24.124]:47456) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA1:256) (Exim 4.90_1) (envelope-from ) id 1kcpvI-0002HT-Lh for qemu-devel@nongnu.org; Wed, 11 Nov 2020 08:12:30 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1605100348; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=bhHctUgBLKeuQGVfGwsPAFIarLfy5Zp2GRSCj1/r2pk=; b=E9pQgFY7LzHBS0EQ2+StKy8RPf1ybaANOZZMmhISuzZszNAwcEpMVP3JiEhiekqROXj76S V0ktVQ0Xjp1Y6D18p9AtcA0qbGLNDHlOqngvJOBvNEZ7K0YIfal14tSGYCRnIHvTkWxN9/ Xs8bRC+E/ZNKYVucfR3WCg+gZfi7260= Received: from mimecast-mx01.redhat.com (mimecast-mx01.redhat.com [209.132.183.4]) (Using TLS) by relay.mimecast.com with ESMTP id us-mta-571-ceKP-XgkNZS74NWMK4eIjQ-1; Wed, 11 Nov 2020 08:12:25 -0500 X-MC-Unique: ceKP-XgkNZS74NWMK4eIjQ-1 Received: from smtp.corp.redhat.com (int-mx05.intmail.prod.int.phx2.redhat.com [10.5.11.15]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx01.redhat.com (Postfix) with ESMTPS id A299364083; Wed, 11 Nov 2020 13:12:24 +0000 (UTC) Received: from jason-ThinkPad-T430s.redhat.com (ovpn-12-61.pek2.redhat.com [10.72.12.61]) by smtp.corp.redhat.com (Postfix) with ESMTP id 0F7C055760; Wed, 11 Nov 2020 13:12:22 +0000 (UTC) From: Jason Wang To: qemu-devel@nongnu.org, peter.maydell@linaro.org Subject: [PULL 17/17] hw/net/can/ctucan_core: Use stl_le_p to write to tx_buffers Date: Wed, 11 Nov 2020 21:11:41 +0800 Message-Id: <1605100301-11317-18-git-send-email-jasowang@redhat.com> In-Reply-To: <1605100301-11317-1-git-send-email-jasowang@redhat.com> References: <1605100301-11317-1-git-send-email-jasowang@redhat.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.79 on 10.5.11.15 Authentication-Results: relay.mimecast.com; auth=pass smtp.auth=CUSA124A263 smtp.mailfrom=jasowang@redhat.com X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Received-SPF: pass client-ip=216.205.24.124; envelope-from=jasowang@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-detected-operating-system: by eggs.gnu.org: First seen = 2020/11/11 01:49:01 X-ACL-Warn: Detected OS = Linux 2.2.x-3.x [generic] [fuzzy] X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H4=0.001, RCVD_IN_MSPIKE_WL=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Jason Wang , Pavel Pisa Errors-To: qemu-devel-bounces+patch=linaro.org@nongnu.org Sender: "Qemu-devel" From: Peter Maydell Instead of casting an address within a uint8_t array to a uint32_t*, use stl_le_p(). This handles possibly misaligned addresses which would otherwise crash on some hosts. Signed-off-by: Peter Maydell Reviewed-by: Philippe Mathieu-Daudé Signed-off-by: Pavel Pisa Tested-by: Pavel Pisa Signed-off-by: Jason Wang --- hw/net/can/ctucan_core.c | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) -- 2.7.4 diff --git a/hw/net/can/ctucan_core.c b/hw/net/can/ctucan_core.c index f49c762..d171c37 100644 --- a/hw/net/can/ctucan_core.c +++ b/hw/net/can/ctucan_core.c @@ -303,11 +303,9 @@ void ctucan_mem_write(CtuCanCoreState *s, hwaddr addr, uint64_t val, addr -= CTU_CAN_FD_TXTB1_DATA_1; buff_num = addr / CTUCAN_CORE_TXBUFF_SPAN; addr %= CTUCAN_CORE_TXBUFF_SPAN; - addr &= ~3; if ((buff_num < CTUCAN_CORE_TXBUF_NUM) && - (addr < sizeof(s->tx_buffer[buff_num].data))) { - uint32_t *bufp = (uint32_t *)(s->tx_buffer[buff_num].data + addr); - *bufp = cpu_to_le32(val); + ((addr + size) <= sizeof(s->tx_buffer[buff_num].data))) { + stn_le_p(s->tx_buffer[buff_num].data + addr, size, val); } } else { switch (addr & ~3) {