Received: by 2002:a05:6a10:f3d0:0:0:0:0 with SMTP id a16csp5375983pxv; Wed, 7 Jul 2021 02:12:03 -0700 (PDT) X-Google-Smtp-Source: ABdhPJwFLwAA3w/G/CspBlTandOy+9YXNv8+ht7jreh+iRn8BoMy7vip9OfO2WT95dyPYesyDqCn X-Received: by 2002:a17:907:76b9:: with SMTP id jw25mr23039954ejc.71.1625649123565; Wed, 07 Jul 2021 02:12:03 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1625649123; cv=none; d=google.com; s=arc-20160816; b=z4LxLecDvE/aGXbxoTRdmBYxfH0ZZMpy9DkO4nt2IzBLiSGcx6JMRW1568PHzOctfc SH/AIbFXhgBH0j/JvfEGG970NGZ8edraT/butGTzm7to/IGyY4paZnsAv0ameSn/3DTF HYez/Z/IWIBj2cR4UPYVfx7CvM3QQY7bzW/m62jd47ra1KxNGtRMB5pVD0CLdW3wjUR8 IMiTobLAfIbHOq9/AvKqZL3Lernnw/WOVSlxeaNye4Mh39rJSHGbZjTUjjDlvKtSAHww 0AUF++eizN0iSG2IyecTtXDtdfWLs1cGuLyD0UXLVUuL3jV8EGDjdk6kGdA66XUeXicU 54ow== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :message-id:date:subject:cc:to:from:dkim-signature; bh=jBrTdZh0fhHdoZBmt7kZCO7hzkn6x3INTyY3C5pkFwM=; b=N8f/xWhW2hVEFRxp84cKnOdRsnV8+lG4Jqag2xQOCIK2MYsvW32s8XFovkp7Zbgtug q6bY4frb3XAkDD21ePD3Bh9uZKIuF8GShjBSv2u4ZCmdnGj/JV+jTpLyeBsaiRwp3vcv UGrhlPe711LKPfSZjPilj5Hf9XD5iaE7mM630Leqr2qg2768xven5fqr3bzj34qCoJcR 6bkZN/yvqV2gcN1K9rkvVOlbMgYv8rcKKs4yAuyjh2czkK8QsA7OLeqFIT1+HY8miFim H1bLHzVUWW8eaP/kva2gHBcBZSd8cD5W1BRFYiKt8Xg0vkg98yrEjXc3YNMr6WdBvp9U qb4Q== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@suse.com header.s=susede1 header.b=S2JKLryR; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=QUARANTINE sp=NONE dis=NONE) header.from=suse.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id 5si8700556ejq.621.2021.07.07.02.11.40; Wed, 07 Jul 2021 02:12:03 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; dkim=pass header.i=@suse.com header.s=susede1 header.b=S2JKLryR; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=QUARANTINE sp=NONE dis=NONE) header.from=suse.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S231144AbhGGJN3 (ORCPT + 99 others); Wed, 7 Jul 2021 05:13:29 -0400 Received: from smtp-out2.suse.de ([195.135.220.29]:42620 "EHLO smtp-out2.suse.de" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S230166AbhGGJN3 (ORCPT ); Wed, 7 Jul 2021 05:13:29 -0400 Received: from imap1.suse-dmz.suse.de (imap1.suse-dmz.suse.de [192.168.254.73]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature ECDSA (P-521) server-digest SHA512) (No client certificate requested) by smtp-out2.suse.de (Postfix) with ESMTPS id 73D1C1FD5C; Wed, 7 Jul 2021 09:10:48 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=susede1; t=1625649048; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc: mime-version:mime-version: content-transfer-encoding:content-transfer-encoding; bh=jBrTdZh0fhHdoZBmt7kZCO7hzkn6x3INTyY3C5pkFwM=; b=S2JKLryRPmjUmQr9qsJJMP4SAYWAeQdDK57J6LPLxK5z9x6x3XQrAFHaITXI3dWZAWazwE L7LZHl1Ecfl22mrcaxv93w06LSjduKdNmBf0P7ENfxbe5yed6jbPVBX7fEFsEiXK2/a3jd sC/5d4yUaeG8VZD/deLqErOUYhHNgho= Received: from imap1.suse-dmz.suse.de (imap1.suse-dmz.suse.de [192.168.254.73]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature ECDSA (P-521) server-digest SHA512) (No client certificate requested) by imap1.suse-dmz.suse.de (Postfix) with ESMTPS id 3CDA613966; Wed, 7 Jul 2021 09:10:48 +0000 (UTC) Received: from dovecot-director2.suse.de ([192.168.254.65]) by imap1.suse-dmz.suse.de with ESMTPSA id 6ZHeDJhv5WDWOAAAGKfGzw (envelope-from ); Wed, 07 Jul 2021 09:10:48 +0000 From: Juergen Gross To: xen-devel@lists.xenproject.org, linuxppc-dev@lists.ozlabs.org, linux-kernel@vger.kernel.org Cc: Juergen Gross , Greg Kroah-Hartman , Jiri Slaby Subject: [PATCH v2] xen/hvc: replace BUG_ON() with negative return value Date: Wed, 7 Jul 2021 11:10:45 +0200 Message-Id: <20210707091045.460-1-jgross@suse.com> X-Mailer: git-send-email 2.26.2 MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Xen frontends shouldn't BUG() in case of illegal data received from their backends. So replace the BUG_ON()s when reading illegal data from the ring page with negative return values. Signed-off-by: Juergen Gross --- V2: - drop BUG_ON() (Christophe Leroy, Greg Kroah-Hartmann) - replace WARN_ONCE() by pr_err_once() (Greg Kroah-Hartmann) - break out from original series --- drivers/tty/hvc/hvc_xen.c | 17 ++++++++++++++--- 1 file changed, 14 insertions(+), 3 deletions(-) diff --git a/drivers/tty/hvc/hvc_xen.c b/drivers/tty/hvc/hvc_xen.c index 92c9a476defc..8f143c09a169 100644 --- a/drivers/tty/hvc/hvc_xen.c +++ b/drivers/tty/hvc/hvc_xen.c @@ -86,7 +86,11 @@ static int __write_console(struct xencons_info *xencons, cons = intf->out_cons; prod = intf->out_prod; mb(); /* update queue values before going on */ - BUG_ON((prod - cons) > sizeof(intf->out)); + + if ((prod - cons) > sizeof(intf->out)) { + pr_err_once("xencons: Illegal ring page indices"); + return -EINVAL; + } while ((sent < len) && ((prod - cons) < sizeof(intf->out))) intf->out[MASK_XENCONS_IDX(prod++, intf->out)] = data[sent++]; @@ -114,7 +118,10 @@ static int domU_write_console(uint32_t vtermno, const char *data, int len) */ while (len) { int sent = __write_console(cons, data, len); - + + if (sent < 0) + return sent; + data += sent; len -= sent; @@ -138,7 +145,11 @@ static int domU_read_console(uint32_t vtermno, char *buf, int len) cons = intf->in_cons; prod = intf->in_prod; mb(); /* get pointers before reading ring */ - BUG_ON((prod - cons) > sizeof(intf->in)); + + if ((prod - cons) > sizeof(intf->in)) { + pr_err_once("xencons: Illegal ring page indices"); + return -EINVAL; + } while (cons != prod && recv < len) buf[recv++] = intf->in[MASK_XENCONS_IDX(cons++, intf->in)]; -- 2.26.2