From owner-freebsd-hackers@freebsd.org Mon Aug 12 10:55:59 2019 Return-Path: Delivered-To: freebsd-hackers@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id 7D845AE758; Mon, 12 Aug 2019 10:55:59 +0000 (UTC) (envelope-from agapon@gmail.com) Received: from mail-pl1-f178.google.com (mail-pl1-f178.google.com [209.85.214.178]) (using TLSv1.3 with cipher TLS_AES_128_GCM_SHA256 (128/128 bits) server-signature RSA-PSS (4096 bits) client-signature RSA-PSS (2048 bits) client-digest SHA256) (Client CN "smtp.gmail.com", Issuer "GTS CA 1O1" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 466Xnp2Rzjz49xs; Mon, 12 Aug 2019 10:55:58 +0000 (UTC) (envelope-from agapon@gmail.com) Received: by mail-pl1-f178.google.com with SMTP id ay6so47776988plb.9; Mon, 12 Aug 2019 03:55:58 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:subject:to:cc:references:from:openpgp:message-id :date:user-agent:mime-version:in-reply-to:content-language :content-transfer-encoding; bh=622/z6LLRa/0hDvDa9YnbGSjikbJQS8KpQBrj4MD4v0=; b=mm4NOqlTuTg/w1BHybWrmKAiB6AHM2zFfV2d/jCqHIhqIxUVFjkyxIp5f8dzfmS86Q ywmx0/BgIheXwAQ4Abx8mZSYAvdgYDXDp7hsx5QA6YwCqgc8Kt+TEiS8Sfyp4n8559Ge z0iGOL/U9kPyZOk2h+VMmdOUhl2QDaAxS32YS41w3Cb6KcBFz0BJnVhnuTxtb9Ca7m0X Pd+q3w7B7UPC6wUKeveI/LvJzkT23vxkmN70XItWVRHZce+q//c1xCPUZeSKz0rpmIuu rN5nMh1d32vuV84fkj571Ba7pBp78UjXTU5y+NdxUh1Pn9hdlJKICJzjUa6LNo0enxsm OuWA== X-Gm-Message-State: APjAAAXxmL5aml9R9A8IlpuGHNK7SeA4CLiyxxFEAJZjh9UXD6UAB/jY ob6TBGYuWAu4f8pxEfzUog3XW+JC X-Google-Smtp-Source: APXvYqxvObdhJTi7ubKhKRh7WjhMUKXtYkBxjz7GMUC7PaW1jws2fMrfiMGbhglKCqxFI+NSKyhLoA== X-Received: by 2002:a17:902:86:: with SMTP id a6mr32660625pla.244.1565607356391; Mon, 12 Aug 2019 03:55:56 -0700 (PDT) Received: from [192.168.1.36] (broadband-82-140-206-197.atc.tvcom.ru. [82.140.206.197]) by smtp.googlemail.com with ESMTPSA id a128sm123283225pfb.185.2019.08.12.03.55.54 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Mon, 12 Aug 2019 03:55:55 -0700 (PDT) Subject: Re: userret: assert td_lk_slocks == 0 To: Mateusz Guzik Cc: FreeBSD Current , "freebsd-hackers@freebsd.org" References: <94110a73-3c55-e87e-96ae-475014e45596@FreeBSD.org> From: Andriy Gapon Openpgp: preference=signencrypt Message-ID: Date: Mon, 12 Aug 2019 13:55:53 +0300 User-Agent: Mozilla/5.0 (Windows NT 6.3; WOW64; rv:60.0) Gecko/20100101 Thunderbird/60.8.0 MIME-Version: 1.0 In-Reply-To: Content-Type: text/plain; charset=utf-8 Content-Language: en-US Content-Transfer-Encoding: 7bit X-Rspamd-Queue-Id: 466Xnp2Rzjz49xs X-Spamd-Bar: ------ Authentication-Results: mx1.freebsd.org; dkim=none; dmarc=none; spf=pass (mx1.freebsd.org: domain of agapon@gmail.com designates 209.85.214.178 as permitted sender) smtp.mailfrom=agapon@gmail.com X-Spamd-Result: default: False [-6.11 / 15.00]; TO_DN_EQ_ADDR_SOME(0.00)[]; RCVD_VIA_SMTP_AUTH(0.00)[]; TO_DN_SOME(0.00)[]; R_SPF_ALLOW(-0.20)[+ip4:209.85.128.0/17:c]; RCVD_COUNT_THREE(0.00)[3]; NEURAL_HAM_SHORT(-0.99)[-0.988,0]; FORGED_SENDER(0.30)[avg@FreeBSD.org,agapon@gmail.com]; FREEMAIL_TO(0.00)[gmail.com]; RECEIVED_SPAMHAUS_PBL(0.00)[197.206.140.82.khpj7ygk5idzvmvt5x4ziurxhy.zen.dq.spamhaus.net : 127.0.0.11]; MIME_TRACE(0.00)[0:+]; R_DKIM_NA(0.00)[]; FREEMAIL_ENVFROM(0.00)[gmail.com]; ASN(0.00)[asn:15169, ipnet:209.85.128.0/17, country:US]; FROM_NEQ_ENVFROM(0.00)[avg@FreeBSD.org,agapon@gmail.com]; ARC_NA(0.00)[]; NEURAL_HAM_MEDIUM(-1.00)[-1.000,0]; MID_RHS_MATCH_FROM(0.00)[]; FROM_HAS_DN(0.00)[]; RCPT_COUNT_THREE(0.00)[3]; NEURAL_HAM_LONG(-1.00)[-1.000,0]; MIME_GOOD(-0.10)[text/plain]; DMARC_NA(0.00)[FreeBSD.org]; TO_MATCH_ENVRCPT_SOME(0.00)[]; RCVD_IN_DNSWL_NONE(0.00)[178.214.85.209.list.dnswl.org : 127.0.5.0]; IP_SCORE(-3.12)[ip: (-9.77), ipnet: 209.85.128.0/17(-3.38), asn: 15169(-2.39), country: US(-0.05)]; RCVD_TLS_ALL(0.00)[] X-BeenThere: freebsd-hackers@freebsd.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Technical Discussions relating to FreeBSD List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 12 Aug 2019 10:55:59 -0000 On 12/08/2019 13:49, Mateusz Guzik wrote: > On 8/12/19, Andriy Gapon wrote: >> >> I am trying to debug a leak of a shared vnode lock and I noticed that >> there is no check for td_lk_slocks in userret. There are checks for >> td_rw_rlocks and td_sx_slocks. I wonder if there is any valid scenario >> where a thread is allowed to retain a shared lock manager lock across >> system calls. >> > > These counters are not for debugging purposes. They are part of poor > man's starvation prevention for writers. Yes, I realize that. > If the target lock is taken for reading and someone wants to take it for > writing, a bit will be set to denote this fact and prevent more readers > from showing up. However, this can lead to deadlocks so if someone > already has a read lock on something, they can bypass the bit and > grab the extra read lock anyway. > > No locks are allowed to leak back to userspace and witness should > already handles checking this for readers as well. Yes. But since we have those asserts for td_rw_rlocks and td_sx_slocks, wouldn't it make sense to add one for td_lk_slocks? If it's considered superfluous for FreeBSD, then at least I'll add it in the work's fork. -- Andriy Gapon