From patchwork Mon Sep 14 08:01:00 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Heinrich Schuchardt X-Patchwork-Id: 1363356 X-Patchwork-Delegate: sjg@chromium.org Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=lists.denx.de (client-ip=2a01:238:438b:c500:173d:9f52:ddab:ee01; helo=phobos.denx.de; envelope-from=u-boot-bounces@lists.denx.de; receiver=) Authentication-Results: ozlabs.org; dmarc=none (p=none dis=none) header.from=gmx.de Authentication-Results: ozlabs.org; dkim=pass (1024-bit key; secure) header.d=gmx.net header.i=@gmx.net header.a=rsa-sha256 header.s=badeba3b8450 header.b=MERycTgz; dkim-atps=neutral Received: from phobos.denx.de (phobos.denx.de [IPv6:2a01:238:438b:c500:173d:9f52:ddab:ee01]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 4Bqf244xTtz9sSP for ; Mon, 14 Sep 2020 18:01:16 +1000 (AEST) Received: from h2850616.stratoserver.net (localhost [IPv6:::1]) by phobos.denx.de (Postfix) with ESMTP id D090881281; Mon, 14 Sep 2020 10:01:12 +0200 (CEST) Authentication-Results: phobos.denx.de; dmarc=none (p=none dis=none) header.from=gmx.de Authentication-Results: phobos.denx.de; spf=pass smtp.mailfrom=u-boot-bounces@lists.denx.de Authentication-Results: phobos.denx.de; dkim=pass (1024-bit key; secure) header.d=gmx.net header.i=@gmx.net header.b="MERycTgz"; dkim-atps=neutral Received: by phobos.denx.de (Postfix, from userid 109) id DAF5781996; Mon, 14 Sep 2020 10:01:10 +0200 (CEST) X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on phobos.denx.de X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,FREEMAIL_FROM,RCVD_IN_MSPIKE_H2,SPF_HELO_NONE,URIBL_BLOCKED autolearn=ham autolearn_force=no version=3.4.2 Received: from mout.gmx.net (mout.gmx.net [212.227.17.20]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) (No client certificate requested) by phobos.denx.de (Postfix) with ESMTPS id 3E11E808B2 for ; Mon, 14 Sep 2020 10:01:08 +0200 (CEST) Authentication-Results: phobos.denx.de; dmarc=none (p=none dis=none) header.from=gmx.de Authentication-Results: phobos.denx.de; spf=pass smtp.mailfrom=xypron.glpk@gmx.de DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=gmx.net; s=badeba3b8450; t=1600070466; bh=2A0t3oxixNjkeRE5a5mJigMrZ/T8iTGWaQ4HkoNcna4=; h=X-UI-Sender-Class:From:To:Cc:Subject:Date; b=MERycTgzYoqpbtPn05t5ItYnoO0ZWakH4w4+QRA0z0HIfvAu+yKSiZRq3zjM2lSMA am0HQ0iz/OgT9Ab4Y8mceO1YCRE386Js/JEHtDFdsl6Xt6k7X1aZZ1irezaIrYBL0t 4rivwrp4KnoE+5xd/P264+vPlGHuKNq6AR9WWpns= X-UI-Sender-Class: 01bb95c1-4bf8-414a-932a-4f6e2808ef9c Received: from LT02.fritz.box ([178.202.41.107]) by mail.gmx.com (mrgmx104 [212.227.17.174]) with ESMTPSA (Nemesis) id 1MAONX-1kNTez1hZD-00BqTS; Mon, 14 Sep 2020 10:01:06 +0200 From: Heinrich Schuchardt To: Simon Glass Cc: u-boot@lists.denx.de, Heinrich Schuchardt Subject: [PATCH 1/1] log: mute messages generated by log drivers Date: Mon, 14 Sep 2020 10:01:00 +0200 Message-Id: <20200914080100.118667-1-xypron.glpk@gmx.de> X-Mailer: git-send-email 2.28.0 MIME-Version: 1.0 X-Provags-ID: V03:K1:pRv07f/OQz82q/kKUw/4QUnr3H1IUuowBO/BIPbNOgw0i6/qHt4 ns+fx6NZIVVh7zvJjqwPXWuyf1dVsE3tVgYQhBqoAe0FT06uvvUuUsB9lOzvqh30dk5/nXX JhPetfF6+6RV9Hch8RJWstxdK4Kx2PFlKVdktXInfrVFbmmaScQNK4RAlapSUtgCj2NkfLV a8lQQGMd9P2YvoQutVmmw== X-UI-Out-Filterresults: notjunk:1;V03:K0:1KMisRzQsGI=:xdI+M0+EmKrPe4x8lBzio4 O0RIfkzY0dXvIjoMu/GpmK9OQ1mqZTpNuD/sXo4zK302UQk1myf8tdLmEGmqfuZ+51LaI9z5/ OSphB8VLOm57kk9D1sWQuo27VPdr3pzvHPt1B6PxJZEQi3ZkYrS2yZAlhTPcOiM4kk/Y6ErqP ahxTgvbta2PPXT0tOdItQZqYNpzyuKRZlgh0O89g2FqJ0fTGjZAG79lvHYeXrMgDOd3cmXVwS lnAYAZSHEmpv7O7WAPYK3DlLXs9vrTtbsq8LeuiqPA5GiB/xPCABGgCtZbp4Pm1IWBNIy69Lz MyISdmnmyhnillIAyOCQ7ExkqBF/A7IfAVfFIKC+Yca48VRgZIbxPTMhbPKsapoWi3rbRoDgr W4kraRUm/EKK9QACILX/gFQrGPi4177iB0k90lSYc8DZ5sf5bY9zIKsxi1VGJtP2WVHAQDNaO 9khoHcPDzD42dLQLm8kf+xc04n0ZTNO0UyiAKn3tw/xe6sDoAcm2L8SkGaOagWJEe3zrVHHrS +vVruX6dRkDrdD4t1OdiR9kirWtt05yhjoZRHOMKAmOgd47WXNka3I5rqHWUM1cN79nNx9lDG ix6UoYz5S3XQYY56gV0p9PMbq0HosGkH4URhugWRdzvvFA9EH8DVu6neDqD4+mkhExNAZ5ZOw fYnfYfcDJufL67/ZirzEHiKyxs1+A9v1byNgXT4HOBO33qY2VAma8jY3np0EJMeICWuMSEvQ3 TfWRPGYnx17wGxfy843fSzFHkMu+sCnVjnpD/7P7qCMORTdUpU2pvqgdB00TlV0PM8llJyQmh QW0Ys6roI+4TIYZn13u8a9LKyYwKMV6lyeWHwJBujEVBsgoSvnCMrWWsVNkSqAMjxnvakpXx1 N914MAzOkNfkZW3M7l/WKyQ7QT//IilH4yWnchMDZtCxje24ufLw6A472lhHx2e8NyINC1g+r HrEVph/qxDF3Wkl8/9uA2vz9Pdz6BlynotjDGYoyTYUW0AZleMh2VZZ8mF00MPxOPO/wfaIYW MZyfto/bgRJgeYEX1BpVYnRCByOs56XRuZcQMtTMo11DSMRyiHFTOM0kB3aaqwpthZ63XCXTw Qj1b6z7/SoBH5Fm5uUy6VaNVxOF9SL/SoT9VZ9LnBGKn+t+FbFES3qR4u2Vwc//2uV6RPAXW5 bRM7jEIo651/hNMgCChQO/uPVkKkQRqwCjs86w4ouT3A5Jx3l8LwPno9CnFawli1CXiCXaTqr hBTANNhCN9ze3BhacaoY+6Y0kE4gzHo9QktMbqw== X-BeenThere: u-boot@lists.denx.de X-Mailman-Version: 2.1.34 Precedence: list List-Id: U-Boot discussion List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: u-boot-bounces@lists.denx.de Sender: "U-Boot" X-Virus-Scanned: clamav-milter 0.102.3 at phobos.denx.de X-Virus-Status: Clean When a message is written by a log driver (e.g. via the network stack) this may result in the generation of further messages. We cannot allow these additional messages to be emitted as this might result in an infinite recursion. Up to now only the syslog driver was safeguarded. We should safeguard all log drivers instead. Signed-off-by: Heinrich Schuchardt Reviewed-by: Simon Glass Reviewed-by: Simon Glass --- common/log.c | 13 ++++++++++++- common/log_syslog.c | 8 -------- 2 files changed, 12 insertions(+), 9 deletions(-) -- 2.28.0 diff --git a/common/log.c b/common/log.c index 734d26de4a..9a5f100da3 100644 --- a/common/log.c +++ b/common/log.c @@ -191,12 +191,23 @@ static bool log_passes_filters(struct log_device *ldev, struct log_rec *rec) static int log_dispatch(struct log_rec *rec) { struct log_device *ldev; + static int processing_msg; + /* + * When a log driver writes messages (e.g. via the network stack) this + * may result in further generated messages. We cannot process them here + * as this might result in infinite recursion. + */ + if (processing_msg) + return 0; + + /* Emit message */ + processing_msg = 1; list_for_each_entry(ldev, &gd->log_head, sibling_node) { if (log_passes_filters(ldev, rec)) ldev->drv->emit(ldev, rec); } - + processing_msg = 0; return 0; } diff --git a/common/log_syslog.c b/common/log_syslog.c index 149ff5af31..2ae703fed7 100644 --- a/common/log_syslog.c +++ b/common/log_syslog.c @@ -35,16 +35,9 @@ static int log_syslog_emit(struct log_device *ldev, struct log_rec *rec) char *log_msg; int eth_hdr_size; struct in_addr bcast_ip; - static int processing_msg; unsigned int log_level; char *log_hostname; - /* Fend off messages from the network stack while writing a message */ - if (processing_msg) - return 0; - - processing_msg = 1; - /* Setup packet buffers */ net_init(); /* Disable hardware and put it into the reset state */ @@ -108,7 +101,6 @@ static int log_syslog_emit(struct log_device *ldev, struct log_rec *rec) net_send_packet((uchar *)msg, ptr - msg); out: - processing_msg = 0; return ret; }