From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by smtp.lore.kernel.org (Postfix) with ESMTP id C9FF7D637A8 for ; Wed, 13 Nov 2024 18:49:49 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 505826B0088; Wed, 13 Nov 2024 13:49:49 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id 499D66B0089; Wed, 13 Nov 2024 13:49:49 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 3576C6B008A; Wed, 13 Nov 2024 13:49:49 -0500 (EST) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0012.hostedemail.com [216.40.44.12]) by kanga.kvack.org (Postfix) with ESMTP id 0E4BC6B0088 for ; Wed, 13 Nov 2024 13:49:49 -0500 (EST) Received: from smtpin04.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay04.hostedemail.com (Postfix) with ESMTP id A9EAC1A09FD for ; Wed, 13 Nov 2024 18:49:48 +0000 (UTC) X-FDA: 82781960016.04.BEDF80C Received: from mail-ed1-f48.google.com (mail-ed1-f48.google.com [209.85.208.48]) by imf07.hostedemail.com (Postfix) with ESMTP id D3F694001C for ; Wed, 13 Nov 2024 18:48:45 +0000 (UTC) Authentication-Results: imf07.hostedemail.com; dkim=pass header.d=gmail.com header.s=20230601 header.b=YKVCE45S; dmarc=pass (policy=none) header.from=gmail.com; spf=pass (imf07.hostedemail.com: domain of amir73il@gmail.com designates 209.85.208.48 as permitted sender) smtp.mailfrom=amir73il@gmail.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1731523610; h=from:from:sender: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: in-reply-to:in-reply-to:references:references:dkim-signature; bh=S4+CN7Ii5HFh2C5ssFaQ0l9WBIBw5XbCT/tU3Jb6GRQ=; b=mW65cf9FsxLMTvJbP6CAPnCuG8MfxjnMAWVUijfz46K7uYdmcp/sGp3sgZXKpfKJXDThpJ Yv9VH0Cihw5yO2PNpktXpUphMaIcVqPMSZgOc3Og3mvcJPnBVSheNsHBrsVWUIyZsx56DQ vAxaoZLA05sfMHUKp4370UhTirjuFFo= ARC-Authentication-Results: i=1; imf07.hostedemail.com; dkim=pass header.d=gmail.com header.s=20230601 header.b=YKVCE45S; dmarc=pass (policy=none) header.from=gmail.com; spf=pass (imf07.hostedemail.com: domain of amir73il@gmail.com designates 209.85.208.48 as permitted sender) smtp.mailfrom=amir73il@gmail.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1731523610; a=rsa-sha256; cv=none; b=4Lv+giwbMVdqiIJb0eenpIN3twvNo7joeRVulZZIHEQcnbHQVZLWltQh+rhq0FH1xrFkkR MCfX1j4rfp1Ua7tEGVqm/bGT/sgAeQJEux4sABX9xzfHwNnZgu9sRxu5CS45rGDC1Nj3VQ kCVGIJk+HvANPj2Vv9bdK3g2V8urnOI= Received: by mail-ed1-f48.google.com with SMTP id 4fb4d7f45d1cf-5ceca0ec4e7so9304418a12.0 for ; Wed, 13 Nov 2024 10:49:46 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1731523785; x=1732128585; darn=kvack.org; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:from:to:cc:subject:date:message-id:reply-to; bh=S4+CN7Ii5HFh2C5ssFaQ0l9WBIBw5XbCT/tU3Jb6GRQ=; b=YKVCE45SZMV5hc5SiF1qGUI60vX+2ubuQFEIbWVgclPTDaHe8KSwIxVQWASwLn6IMu zHLE9tTpgF4mXF5KHvX5IiDDeFkiEKtKEvWHSqjowbRP3MyTx9/2V2rUKfdRfLGNkAAY 3AfBPERFBYEBXqXwEWEXD3pcjr5cW5q/0rhuHOZrAFXGzQ2jUBMJ468UpaicekWb40Og MA2MOE32+c/AViWrAY6MgnA+t1fMVrRCDiJkSplSSWUZW79Uli8BNB11+22gLXfhiYAR 7FwheOp9FC173AcJCIUZLewYq8EET/rKL/A+9+9aHCDBfgwiJmtY6sDmV2+tved5Tuna w+AQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1731523785; x=1732128585; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=S4+CN7Ii5HFh2C5ssFaQ0l9WBIBw5XbCT/tU3Jb6GRQ=; b=niPwnguz5ImK3Q1ASwouharOPRTrz1zKymD50GK/QwfIEP8+VY+lSTBB4Tazftuo55 PM5WbudW5Js3/IHBPk9JHuvRdVbxzKTEqOtrQMVMopSVzWKtoU48tkGlGjo7AipDsyah asmhaPf2fnD/U7YXQgyuH2NYFxNIelwSHULhBp/Vox+w4edxhWabPZ82ABP+5UcjMeWI xlcdJHdbrPbfNmFzeAg7+/V8MgoGlFWWd2iC3hFB29yeu4INSLYpji6PhpA7RsTu9fRQ kOmL+Hm6twF14bBEoiy0TpVGNjAnSUQ9MDVf9VnV07r8G3LJetCV4gAnrVsldjr4Ouin I9OA== X-Forwarded-Encrypted: i=1; AJvYcCVryyjZZ/+bWz0wq/S4GWem+CzTwkP3oIzq6422tByOjgyhm/ZawLPSSGS0DCcCTjlQCLS21wH4lA==@kvack.org X-Gm-Message-State: AOJu0YwkVQROFj0sV+w1b2l1m97Q2rJVQx3HM6Dh/B+RuOjQD2aRsBkn /8eA9lbrV6nrQsH2lMDYWG9ilXv7rVO0889mQayf+1eSpCl4hyZhR6lrKGUcz87yRuwU0aHThDG g9E4/IOZFD76H+gTTI2dj+8ywEXwin+KL0tQ= X-Google-Smtp-Source: AGHT+IFNpYzMGsm11wKWjUIBvPQE5e42MxlUp78YWQFMFDmZWQD3yazyTEb0xl8oWFcBkpJzsMp2m5YzpbN40qacbNk= X-Received: by 2002:a17:907:d2a:b0:a9a:a891:b43e with SMTP id a640c23a62f3a-a9ef0049273mr2186275166b.50.1731523784879; Wed, 13 Nov 2024 10:49:44 -0800 (PST) MIME-Version: 1.0 References: <141e2cc2dfac8b2f49c1c8d219dd7c20925b2cef.1731433903.git.josef@toxicpanda.com> In-Reply-To: From: Amir Goldstein Date: Wed, 13 Nov 2024 19:49:31 +0100 Message-ID: Subject: Re: [PATCH v7 05/18] fsnotify: introduce pre-content permission events To: Linus Torvalds Cc: Josef Bacik , kernel-team@fb.com, linux-fsdevel@vger.kernel.org, jack@suse.cz, brauner@kernel.org, linux-xfs@vger.kernel.org, linux-btrfs@vger.kernel.org, linux-mm@kvack.org, linux-ext4@vger.kernel.org Content-Type: multipart/mixed; boundary="0000000000001e48560626cfcc8c" X-Rspamd-Server: rspam04 X-Rspamd-Queue-Id: D3F694001C X-Stat-Signature: 1ba7rm7zzsw5a4f6enkx64rjtdj5ba1m X-Rspam-User: X-HE-Tag: 1731523725-412006 X-HE-Meta: U2FsdGVkX1/orKpGuNMw4r5ixqN6+YfnuBspuEpZOqA6o/ent+/29hCN9hsfTzWvy/vLmgIDC985kgNo/f8lWDcXTuWBn9Kg4ft72vE1spxCUO2BJpE6GeIE/uNPVg3es7zlTwUwm5iNR5ob9+3tshV+5YLZk4jYcTN0Oxuo3DxkxxvfFVD+Zd+3eUJz1g/cpaiFE3Z48vPxbSFs62nUYd7K1RZBLnKLzVCr9ZCokdg1F6zcScpYyNRNYVOqKssDglYrSkLc9Zcb9lHvleph9F66WkbLJia9BU0H6lkP5vpZ2D2ysEWW7Abea7vqKKt50T9WVXsOjJGGl7QkcbsHiI8lSoz4yNCRmiALHuW5tYdwdGCqzJOw0v1ivO3AhgKThfxYAJMc5xvY0ri/OA1qjlJkdgMfqw3ol+xLe01TxTwJNMiP/iZQq0sU6mZ27Aqnu3zWOu7ByVYBgHUars3IrF1vQDycgzM8vjmqL6RDpZjXmOyIjTvon+0pfkmWFtuRSDoYRy1oicoUqPnJZQqDn6olijny8lnV8ABrysp+vBZBXNWugm9J+ejXzRmWTKqu+/57BaaQ//+UbBI7v3ylkbCnJ11N8F82KxNZ+pqi7QjDF3O9TlMEfo8DQnMmD/Imm/sDPwWZjV7dYbtwTKWKUMze9ZxhjZ+oI1E7qO6WhvopKy5IMb3rVQ7taRzUhy2OKQxMrQMxPBcD1fHivQSBImFXj4GQCCgDhZ2pUleu3wu8itRAJ/mwXG/hg96dbZRmYgCw/vCVeIfW0mnqeVOasZCSLyFqjHFeuH1TRiDwrd6NGnb1kvOK0TJP8pUDXlNr7IY44L0pCEDd/6lD1kVJOmy6aKt31tCCrapL5+ocFqdeMQpDW7BgaX+gvQ1P0MwWtdXmR93Nbaxf5RyNeIf4WBrV/qn08jm0qLqt3AT+ebMpRaUhGEq4M2r5AxDp9dkL6BC0PD83+SHrSS2yvKd Re32Kjea rPgWmyE/HPU+ZTxkCctIuNf+JtBu+8UZRwU8rZ/CyiQlCyd+Gri/bXgGiVUBkIexPt1mVKdtUQQXKTpzKMd/68WkJO4whNaAcahBb219VidTIOabpBLCxvgkCMq1SxUS5EkPBNmYy9ivT82qXjCCHdyS5qQUPI0qQXkh8V78+BhctkDsaZfOTYkfd86nJm8G6pQy43/hjxxzQNb8Ruw5mwDf7FvWxqj429ky1paQKYRw8sGfGyF5/EGjHYQtV/Qjso2x96x+1j/tRLn84fKKgfEyZW5x9b992M4TlpJ6aoRVKuxpNTiAJPKcaM1Jlv5o8nCP3uJeoFkqLi0VGAC7Sc7KH4qGOuT/Ht8jnJzWLK8Tbfs6shMPPFpEwklRCoJkvThgZ9M/27VYky2xX3x05iUx1qr2FgtZaryRIDob2QuenzCYmLfgOgTAu6pu8R2yu+JBeiQXwwwwyTp6u81z0pdkdEKsNi5Za9NIyTkLmf5MsgEfZ/nYXTpIGxRV9Az0G0EsiMJVL4KWuKwaNLxPNF88N2RbFH0NCTbs7PzvZkkxqZJBQdREDXPVQei0AUVKsZN0q3zf9LtlnuSctChr5n6wBIVdcrpMKhgWupDqudzeIq+bAsDcllwb/I3vx+FcUzH+CpbT/zUR2Behk4sIH4inWgQ== X-Bogosity: Ham, tests=bogofilter, spamicity=0.000000, version=1.2.4 Sender: owner-linux-mm@kvack.org Precedence: bulk X-Loop: owner-majordomo@kvack.org List-ID: List-Subscribe: List-Unsubscribe: --0000000000001e48560626cfcc8c Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable On Wed, Nov 13, 2024 at 5:57=E2=80=AFPM Linus Torvalds wrote: > > On Tue, 12 Nov 2024 at 16:06, Amir Goldstein wrote: > > > > Maybe I could use just this one bit, but together with the existing > > FMODE_NONOTIFY bit, I get 4 modes, which correspond to the > > highest watching priority: > > So you'd use two bits, but one of those would re-use the existing > FMODE_NONOTIFY? That sounds perfectly fine to me. > Yes, exactly, like this: /* * The two FMODE_NONOTIFY_ bits used together have a special meaning of * not reporting any events at all including non-permission events. * These are the possible values of FMODE_NOTIFY(f->f_mode) and their meani= ng: * * FMODE_NONOTIFY_HSM - suppress only pre-content events. * FMODE_NONOTIFY_PERM - suppress permission (incl. pre-content) events. * FMODE_NONOTIFY - suppress all (incl. non-permission) events. */ #define FMODE_NONOTIFY_MASK \ (FMODE_NONOTIFY_HSM | FMODE_NONOTIFY_PERM) #define FMODE_NONOTIFY FMODE_NONOTIFY_MASK #define FMODE_NOTIFY(mode) \ ((mode) & FMODE_NONOTIFY_MASK) Please see attached patch (build and sanity tested) to make sure that we are on the same page. Going forward in the patch series, the choice of the NONOTIFY lingo creates some double negatives, like: /* * read()/write() and other types of access generate pre-content ev= ents. */ if (!likely(file->f_mode & FMODE_NONOTIFY_HSM)) { int ret =3D fsnotify_path(&file->f_path); But it was easier for me to work with NONOTIFY flags. Thanks, Amir. --0000000000001e48560626cfcc8c Content-Type: text/x-patch; charset="US-ASCII"; name="0001-fsnotify-opt-in-for-permission-events-at-file-open-t.patch" Content-Disposition: attachment; filename="0001-fsnotify-opt-in-for-permission-events-at-file-open-t.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_m3g86qoe0 RnJvbSA3YTJjZDc0NjU0YTUzNjg0ZDU0NWI5NmM1N2M5MDkxZTQyMGIzYWRkIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBbWlyIEdvbGRzdGVpbiA8YW1pcjczaWxAZ21haWwuY29tPgpE YXRlOiBUdWUsIDEyIE5vdiAyMDI0IDEzOjQ2OjA4ICswMTAwClN1YmplY3Q6IFtQQVRDSF0gZnNu b3RpZnk6IG9wdC1pbiBmb3IgcGVybWlzc2lvbiBldmVudHMgYXQgZmlsZSBvcGVuIHRpbWUKCkxl Z2FjeSBpbm90aWZ5L2Zhbm90aWZ5IGxpc3RlbmVycyBjYW4gYWRkIHdhdGNoZXMgZm9yIGV2ZW50 cyBvbiBpbm9kZSwKcGFyZW50IG9yIG1vdW50IGFuZCBleHBlY3QgdG8gZ2V0IGV2ZW50cyAoZS5n LiBGU19NT0RJRlkpIG9uIGZpbGVzIHRoYXQKd2VyZSBhbHJlYWR5IG9wZW4gYXQgdGhlIHRpbWUg b2Ygc2V0dGluZyB1cCB0aGUgd2F0Y2hlcy4KCmZhbm90aWZ5IHBlcm1pc3Npb24gZXZlbnRzIGFy ZSB0eXBpY2FsbHkgdXNlZCBieSBBbnRpLW1hbHdhcmUgc29md2FyZSwKdGhhdCBpcyB3YXRjaGlu ZyB0aGUgZW50aXJlIG1vdW50IGFuZCBpdCBpcyBub3QgY29tbW9uIHRvIGhhdmUgbW9yZSB0aGF0 Cm9uZSBBbnRpLW1hbHdhcmUgZW5naW5lIGluc3RhbGxlZCBvbiBhIHN5c3RlbS4KClRvIHJlZHVj ZSB0aGUgb3ZlcmhlYWQgb2YgdGhlIGZzbm90aWZ5X2ZpbGVfcGVybSgpIGhvb2tzIG9uIGV2ZXJ5 IGZpbGUKYWNjZXNzLCByZWxheCB0aGUgc2VtYW50aWNzIG9mIHRoZSBsZWdhY3kgRkFOX0FDQ0VT U19QRVJNIGV2ZW50IHRvIGdlbmVyYXRlCmV2ZW50cyBvbmx5IGlmIHRoZXJlIHdlcmUgKmFueSog cGVybWlzc2lvbiBldmVudCBsaXN0ZW5lcnMgb24gdGhlCmZpbGVzeXN0ZW0gYXQgdGhlIHRpbWUg dGhhdCB0aGUgZmlsZSB3YXMgb3BlbmVkLgoKVGhlIG5ldyBzZW1hbnRpYyBpcyBpbXBsZW1lbnRl ZCBieSBleHRlbmRpbmcgdGhlIEZNT0RFX05PTk9USUZZIGJpdCBpbnRvCnR3byBGTU9ERV9OT05P VElGWV8qIGJpdHMsIHRoYXQgYXJlIHVzZWQgdG8gc3RvcmUgYSBtb2RlIGZvciB3aGljaCBvZiB0 aGUKZXZlbnRzIHR5cGVzIHRvIHJlcG9ydC4KClRoaXMgaXMgZ29pbmcgdG8gYXBwbHkgdG8gdGhl IG5ldyBmYW5vdGlmeSBwcmUtY29udGVudCBldmVudHMgaW4gb3JkZXIKdG8gcmVkdWNlIHRoZSBj b3N0IG9mIHRoZSBuZXcgcHJlLWNvbnRlbnQgZXZlbnQgdmZzIGhvb2tzLgoKU3VnZ2VzdGVkLWJ5 OiBMaW51cyBUb3J2YWxkcyA8dG9ydmFsZHNAbGludXgtZm91bmRhdGlvbi5vcmc+Ckxpbms6IGh0 dHBzOi8vbG9yZS5rZXJuZWwub3JnL2xpbnV4LWZzZGV2ZWwvQ0FIay09d2o4TD1tdGNSVGk9TkVD SE1HZlpRZ1hPcF91aXgxWVZoMDRmRW1yS2FNblhBQG1haWwuZ21haWwuY29tLwpTaWduZWQtb2Zm LWJ5OiBBbWlyIEdvbGRzdGVpbiA8YW1pcjczaWxAZ21haWwuY29tPgotLS0KIGZzL29wZW4uYyAg ICAgICAgICAgICAgICB8ICA4ICsrKystCiBpbmNsdWRlL2xpbnV4L2ZzLmggICAgICAgfCAyNiAr KysrKysrKysrKystLS0KIGluY2x1ZGUvbGludXgvZnNub3RpZnkuaCB8IDcxICsrKysrKysrKysr KysrKysrKysrKysrKysrKysrKystLS0tLS0tLS0KIDMgZmlsZXMgY2hhbmdlZCwgODMgaW5zZXJ0 aW9ucygrKSwgMjIgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvZnMvb3Blbi5jIGIvZnMvb3Bl bi5jCmluZGV4IDIyNmFjYThjNzkwOS4uMTk0YzJjOGQ4Y2Q0IDEwMDY0NAotLS0gYS9mcy9vcGVu LmMKKysrIGIvZnMvb3Blbi5jCkBAIC05MDEsNyArOTAxLDcgQEAgc3RhdGljIGludCBkb19kZW50 cnlfb3BlbihzdHJ1Y3QgZmlsZSAqZiwKIAlmLT5mX3NiX2VyciA9IGZpbGVfc2FtcGxlX3NiX2Vy cihmKTsKIAogCWlmICh1bmxpa2VseShmLT5mX2ZsYWdzICYgT19QQVRIKSkgewotCQlmLT5mX21v ZGUgPSBGTU9ERV9QQVRIIHwgRk1PREVfT1BFTkVEOworCQlmLT5mX21vZGUgPSBGTU9ERV9QQVRI IHwgRk1PREVfT1BFTkVEIHwgRk1PREVfTk9OT1RJRlk7CiAJCWYtPmZfb3AgPSAmZW1wdHlfZm9w czsKIAkJcmV0dXJuIDA7CiAJfQpAQCAtOTI5LDYgKzkyOSwxMiBAQCBzdGF0aWMgaW50IGRvX2Rl bnRyeV9vcGVuKHN0cnVjdCBmaWxlICpmLAogCWlmIChlcnJvcikKIAkJZ290byBjbGVhbnVwX2Fs bDsKIAorCS8qCisJICogU2V0IEZNT0RFX05PTk9USUZZXyogYml0cyBhY2NvcmRpbmcgdG8gZXhp c3RpbmcgcGVybWlzc2lvbiB3YXRjaGVzLgorCSAqIElmIEZNT0RFX05PTk9USUZZIHdhcyBhbHJl YWR5IHNldCBmb3IgYW4gZmFub3RpZnkgZmQsIHRoaXMgZG9lc24ndAorCSAqIGNoYW5nZSBhbnl0 aGluZy4KKwkgKi8KKwlmLT5mX21vZGUgfD0gZnNub3RpZnlfZmlsZV9tb2RlKGYpOwogCWVycm9y ID0gZnNub3RpZnlfb3Blbl9wZXJtKGYpOwogCWlmIChlcnJvcikKIAkJZ290byBjbGVhbnVwX2Fs bDsKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvZnMuaCBiL2luY2x1ZGUvbGludXgvZnMuaApp bmRleCA3MDM1OWRkNjY5ZmYuLmRkNTgzY2U3ZGJhOCAxMDA2NDQKLS0tIGEvaW5jbHVkZS9saW51 eC9mcy5oCisrKyBiL2luY2x1ZGUvbGludXgvZnMuaApAQCAtMTczLDEzICsxNzMsMTQgQEAgdHlw ZWRlZiBpbnQgKGRpb19pb2RvbmVfdCkoc3RydWN0IGtpb2NiICppb2NiLCBsb2ZmX3Qgb2Zmc2V0 LAogCiAjZGVmaW5lCUZNT0RFX05PUkVVU0UJCSgoX19mb3JjZSBmbW9kZV90KSgxIDw8IDIzKSkK IAotLyogRk1PREVfKiBiaXQgMjQgKi8KLQogLyogRmlsZSBpcyBlbWJlZGRlZCBpbiBiYWNraW5n X2ZpbGUgb2JqZWN0ICovCi0jZGVmaW5lIEZNT0RFX0JBQ0tJTkcJCSgoX19mb3JjZSBmbW9kZV90 KSgxIDw8IDI1KSkKKyNkZWZpbmUgRk1PREVfQkFDS0lORwkJKChfX2ZvcmNlIGZtb2RlX3QpKDEg PDwgMjQpKQorCisvKiBGaWxlIHNob3VsZG4ndCBnZW5lcmF0ZSBmYW5vdGlmeSBwcmUtY29udGVu dCBldmVudHMgKi8KKyNkZWZpbmUgRk1PREVfTk9OT1RJRllfSFNNCSgoX19mb3JjZSBmbW9kZV90 KSgxIDw8IDI1KSkKIAotLyogRmlsZSB3YXMgb3BlbmVkIGJ5IGZhbm90aWZ5IGFuZCBzaG91bGRu J3QgZ2VuZXJhdGUgZmFub3RpZnkgZXZlbnRzICovCi0jZGVmaW5lIEZNT0RFX05PTk9USUZZCQko KF9fZm9yY2UgZm1vZGVfdCkoMSA8PCAyNikpCisvKiBGaWxlIHNob3VsZG4ndCBnZW5lcmF0ZSBm YW5vdGlmeSBwZXJtaXNzaW9uIGV2ZW50cyAqLworI2RlZmluZSBGTU9ERV9OT05PVElGWV9QRVJN CSgoX19mb3JjZSBmbW9kZV90KSgxIDw8IDI2KSkKIAogLyogRmlsZSBpcyBjYXBhYmxlIG9mIHJl dHVybmluZyAtRUFHQUlOIGlmIEkvTyB3aWxsIGJsb2NrICovCiAjZGVmaW5lIEZNT0RFX05PV0FJ VAkJKChfX2ZvcmNlIGZtb2RlX3QpKDEgPDwgMjcpKQpAQCAtMTkwLDYgKzE5MSwyMSBAQCB0eXBl ZGVmIGludCAoZGlvX2lvZG9uZV90KShzdHJ1Y3Qga2lvY2IgKmlvY2IsIGxvZmZfdCBvZmZzZXQs CiAvKiBGaWxlIGRvZXMgbm90IGNvbnRyaWJ1dGUgdG8gbnJfZmlsZXMgY291bnQgKi8KICNkZWZp bmUgRk1PREVfTk9BQ0NPVU5UCQkoKF9fZm9yY2UgZm1vZGVfdCkoMSA8PCAyOSkpCiAKKy8qCisg KiBUaGUgdHdvIEZNT0RFX05PTk9USUZZXyBiaXRzIHVzZWQgdG9nZXRoZXIgaGF2ZSBhIHNwZWNp YWwgbWVhbmluZyBvZgorICogbm90IHJlcG9ydGluZyBhbnkgZXZlbnRzIGF0IGFsbCBpbmNsdWRp bmcgbm9uLXBlcm1pc3Npb24gZXZlbnRzLgorICogVGhlc2UgYXJlIHRoZSBwb3NzaWJsZSB2YWx1 ZXMgb2YgRk1PREVfTk9USUZZKGYtPmZfbW9kZSkgYW5kIHRoZWlyIG1lYW5pbmc6CisgKgorICog Rk1PREVfTk9OT1RJRllfSFNNIC0gc3VwcHJlc3Mgb25seSBwcmUtY29udGVudCBldmVudHMuCisg KiBGTU9ERV9OT05PVElGWV9QRVJNIC0gc3VwcHJlc3MgcGVybWlzc2lvbiAoaW5jbC4gcHJlLWNv bnRlbnQpIGV2ZW50cy4KKyAqIEZNT0RFX05PTk9USUZZIC0gc3VwcHJlc3MgYWxsIChpbmNsLiBu b24tcGVybWlzc2lvbikgZXZlbnRzLgorICovCisjZGVmaW5lIEZNT0RFX05PTk9USUZZX01BU0sg XAorCShGTU9ERV9OT05PVElGWV9IU00gfCBGTU9ERV9OT05PVElGWV9QRVJNKQorI2RlZmluZSBG TU9ERV9OT05PVElGWSBGTU9ERV9OT05PVElGWV9NQVNLCisjZGVmaW5lIEZNT0RFX05PVElGWSht b2RlKSBcCisJKChtb2RlKSAmIEZNT0RFX05PTk9USUZZX01BU0spCisKIC8qCiAgKiBBdHRyaWJ1 dGUgZmxhZ3MuICBUaGVzZSBzaG91bGQgYmUgb3ItZWQgdG9nZXRoZXIgdG8gZmlndXJlIG91dCB3 aGF0CiAgKiBoYXMgYmVlbiBjaGFuZ2VkIQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC9mc25v dGlmeS5oIGIvaW5jbHVkZS9saW51eC9mc25vdGlmeS5oCmluZGV4IDI3ODYyMGUwNjNhYi4uOWYx M2M3YzE5Yjc0IDEwMDY0NAotLS0gYS9pbmNsdWRlL2xpbnV4L2Zzbm90aWZ5LmgKKysrIGIvaW5j bHVkZS9saW51eC9mc25vdGlmeS5oCkBAIC0xMDgsMzggKzEwOCw2NiBAQCBzdGF0aWMgaW5saW5l IHZvaWQgZnNub3RpZnlfZGVudHJ5KHN0cnVjdCBkZW50cnkgKmRlbnRyeSwgX191MzIgbWFzaykK IAlmc25vdGlmeV9wYXJlbnQoZGVudHJ5LCBtYXNrLCBkZW50cnksIEZTTk9USUZZX0VWRU5UX0RF TlRSWSk7CiB9CiAKLXN0YXRpYyBpbmxpbmUgaW50IGZzbm90aWZ5X2ZpbGUoc3RydWN0IGZpbGUg KmZpbGUsIF9fdTMyIG1hc2spCitzdGF0aWMgaW5saW5lIGludCBmc25vdGlmeV9wYXRoKGNvbnN0 IHN0cnVjdCBwYXRoICpwYXRoLCBfX3UzMiBtYXNrKQogewotCWNvbnN0IHN0cnVjdCBwYXRoICpw YXRoOworCXJldHVybiBmc25vdGlmeV9wYXJlbnQocGF0aC0+ZGVudHJ5LCBtYXNrLCBwYXRoLCBG U05PVElGWV9FVkVOVF9QQVRIKTsKK30KIAorc3RhdGljIGlubGluZSBpbnQgZnNub3RpZnlfZmls ZShzdHJ1Y3QgZmlsZSAqZmlsZSwgX191MzIgbWFzaykKK3sKIAkvKgogCSAqIEZNT0RFX05PTk9U SUZZIGFyZSBmZHMgZ2VuZXJhdGVkIGJ5IGZhbm90aWZ5IGl0c2VsZiB3aGljaCBzaG91bGQgbm90 CiAJICogZ2VuZXJhdGUgbmV3IGV2ZW50cy4gV2UgYWxzbyBkb24ndCB3YW50IHRvIGdlbmVyYXRl IGV2ZW50cyBmb3IKIAkgKiBGTU9ERV9QQVRIIGZkcyAoaW52b2x2ZXMgb3BlbiAmIGNsb3NlIGV2 ZW50cykgYXMgdGhleSBhcmUganVzdAogCSAqIGhhbmRsZSBjcmVhdGlvbiAvIGRlc3RydWN0aW9u IGV2ZW50cyBhbmQgbm90ICJyZWFsIiBmaWxlIGV2ZW50cy4KIAkgKi8KLQlpZiAoZmlsZS0+Zl9t b2RlICYgKEZNT0RFX05PTk9USUZZIHwgRk1PREVfUEFUSCkpCi0JCXJldHVybiAwOwotCi0JcGF0 aCA9ICZmaWxlLT5mX3BhdGg7Ci0JLyogUGVybWlzc2lvbiBldmVudHMgcmVxdWlyZSBncm91cCBw cmlvID49IEZTTk9USUZZX1BSSU9fQ09OVEVOVCAqLwotCWlmIChtYXNrICYgQUxMX0ZTTk9USUZZ X1BFUk1fRVZFTlRTICYmCi0JICAgICFmc25vdGlmeV9zYl9oYXNfcHJpb3JpdHlfd2F0Y2hlcnMo cGF0aC0+ZGVudHJ5LT5kX3NiLAotCQkJCQkgICAgICAgRlNOT1RJRllfUFJJT19DT05URU5UKSkK KwlpZiAoRk1PREVfTk9USUZZKGZpbGUtPmZfbW9kZSkgPT0gRk1PREVfTk9OT1RJRlkpCiAJCXJl dHVybiAwOwogCi0JcmV0dXJuIGZzbm90aWZ5X3BhcmVudChwYXRoLT5kZW50cnksIG1hc2ssIHBh dGgsIEZTTk9USUZZX0VWRU5UX1BBVEgpOworCXJldHVybiBmc25vdGlmeV9wYXRoKCZmaWxlLT5m X3BhdGgsIG1hc2spOwogfQogCiAjaWZkZWYgQ09ORklHX0ZBTk9USUZZX0FDQ0VTU19QRVJNSVNT SU9OUworLyoKKyAqIEF0IG9wZW4gdGltZSB3ZSBjaGVjayBmc25vdGlmeV9zYl9oYXNfcHJpb3Jp dHlfd2F0Y2hlcnMoKSBhbmQgc2V0IHRoZQorICogRk1PREVfTk9OT1RJRllfIG1vZGUgYml0cyBh Y2NvcmRpZ25seS4KKyAqIExhdGVyLCBmc25vdGlmeSBwZXJtaXNzaW9uIGhvb2tzIGRvIG5vdCBj aGVjayBpZiB0aGVyZSBhcmUgcGVybWlzc2lvbiBldmVudAorICogd2F0Y2hlcywgYnV0IHRoYXQg dGhlcmUgd2VyZSBwZXJtaXNzaW9uIGV2ZW50IHdhdGNoZXMgYXQgb3BlbiB0aW1lLgorICovCitz dGF0aWMgaW5saW5lIGZtb2RlX3QgZnNub3RpZnlfZmlsZV9tb2RlKHN0cnVjdCBmaWxlICpmaWxl KQoreworCXN0cnVjdCBzdXBlcl9ibG9jayAqc2IgPSBmaWxlLT5mX3BhdGguZGVudHJ5LT5kX3Ni OworCisJLyogSXMgaXQgYSBmaWxlIG9wZW5lZCBieSBmYW5vdGlmeT8gKi8KKwlpZiAoRk1PREVf Tk9USUZZKGZpbGUtPmZfbW9kZSkgPT0gRk1PREVfTk9OT1RJRlkpCisJCXJldHVybiBGTU9ERV9O T05PVElGWTsKKworCS8qCisJICogUGVybWlzc2lvbiBldmVudHMgaXMgYSBzdXBlciBzZXQgb2Yg cHJlLWNvbnRlbnQgZXZlbnRzLCBzbyBpZiB0aGVyZQorCSAqIGFyZSBubyBwZXJtaXNzaW9uIGV2 ZW50IHdhdGNoZXJzLCB0aGVyZSBhcmUgYWxzbyBubyBwcmUtY29udGVudCBldmVudAorCSAqIHdh dGNoZXJzIGFuZCB0aGlzIGlzIGltcGxpZWQgZnJvbSB0aGUgc2luZ2xlIEZNT0RFX05PTk9USUZZ X1BFUk0gYml0LgorCSAqLworCWlmIChsaWtlbHkoIWZzbm90aWZ5X3NiX2hhc19wcmlvcml0eV93 YXRjaGVycyhzYiwKKwkJCQkJCUZTTk9USUZZX1BSSU9fQ09OVEVOVCkpKQorCQlyZXR1cm4gRk1P REVfTk9OT1RJRllfUEVSTTsKKworCS8qCisJICogRk1PREVfTk9OT1RJRllfSFNNIGJpdCBtZWFu cyB0aGVyZSBhcmUgcGVybWlzc2lvbiBldmVudCB3YXRjaGVycywgYnV0CisJICogbm8gcHJlLWNv bnRlbnQgZXZlbnQgd2F0Y2hlcnMuCisJICovCisJaWYgKGxpa2VseSghZnNub3RpZnlfc2JfaGFz X3ByaW9yaXR5X3dhdGNoZXJzKHNiLAorCQkJCQkJRlNOT1RJRllfUFJJT19QUkVfQ09OVEVOVCkp KQorCQlyZXR1cm4gRk1PREVfTk9OT1RJRllfSFNNOworCisJcmV0dXJuIDA7Cit9CisKIC8qCiAg KiBmc25vdGlmeV9maWxlX2FyZWFfcGVybSAtIHBlcm1pc3Npb24gaG9vayBiZWZvcmUgYWNjZXNz IHRvIGZpbGUgcmFuZ2UKICAqLwogc3RhdGljIGlubGluZSBpbnQgZnNub3RpZnlfZmlsZV9hcmVh X3Blcm0oc3RydWN0IGZpbGUgKmZpbGUsIGludCBwZXJtX21hc2ssCiAJCQkJCSAgY29uc3QgbG9m Zl90ICpwcG9zLCBzaXplX3QgY291bnQpCiB7Ci0JX191MzIgZnNub3RpZnlfbWFzayA9IEZTX0FD Q0VTU19QRVJNOwotCiAJLyoKIAkgKiBmaWxlc3lzdGVtIG1heSBiZSBtb2RpZmllZCBpbiB0aGUg Y29udGV4dCBvZiBwZXJtaXNzaW9uIGV2ZW50cwogCSAqIChlLmcuIGJ5IEhTTSBmaWxsaW5nIGEg ZmlsZSBvbiBhY2Nlc3MpLCBzbyBzYiBmcmVlemUgcHJvdGVjdGlvbgpAQCAtMTUwLDcgKzE3OCwx MCBAQCBzdGF0aWMgaW5saW5lIGludCBmc25vdGlmeV9maWxlX2FyZWFfcGVybShzdHJ1Y3QgZmls ZSAqZmlsZSwgaW50IHBlcm1fbWFzaywKIAlpZiAoIShwZXJtX21hc2sgJiBNQVlfUkVBRCkpCiAJ CXJldHVybiAwOwogCi0JcmV0dXJuIGZzbm90aWZ5X2ZpbGUoZmlsZSwgZnNub3RpZnlfbWFzayk7 CisJaWYgKGxpa2VseShmaWxlLT5mX21vZGUgJiBGTU9ERV9OT05PVElGWV9QRVJNKSkKKwkJcmV0 dXJuIDA7CisKKwlyZXR1cm4gZnNub3RpZnlfcGF0aCgmZmlsZS0+Zl9wYXRoLCBGU19BQ0NFU1Nf UEVSTSk7CiB9CiAKIC8qCkBAIC0xNjgsMTYgKzE5OSwyNCBAQCBzdGF0aWMgaW5saW5lIGludCBm c25vdGlmeV9vcGVuX3Blcm0oc3RydWN0IGZpbGUgKmZpbGUpCiB7CiAJaW50IHJldDsKIAorCWlm IChsaWtlbHkoZmlsZS0+Zl9tb2RlICYgRk1PREVfTk9OT1RJRllfUEVSTSkpCisJCXJldHVybiAw OworCiAJaWYgKGZpbGUtPmZfZmxhZ3MgJiBfX0ZNT0RFX0VYRUMpIHsKLQkJcmV0ID0gZnNub3Rp ZnlfZmlsZShmaWxlLCBGU19PUEVOX0VYRUNfUEVSTSk7CisJCXJldCA9IGZzbm90aWZ5X3BhdGgo JmZpbGUtPmZfcGF0aCwgRlNfT1BFTl9FWEVDX1BFUk0pOwogCQlpZiAocmV0KQogCQkJcmV0dXJu IHJldDsKIAl9CiAKLQlyZXR1cm4gZnNub3RpZnlfZmlsZShmaWxlLCBGU19PUEVOX1BFUk0pOwor CXJldHVybiBmc25vdGlmeV9wYXRoKCZmaWxlLT5mX3BhdGgsIEZTX09QRU5fUEVSTSk7CiB9CiAK ICNlbHNlCitzdGF0aWMgaW5saW5lIGZtb2RlX3QgZnNub3RpZnlfZmlsZV9tb2RlKHN0cnVjdCBm aWxlICpmaWxlKQoreworCXJldHVybiAwOworfQorCiBzdGF0aWMgaW5saW5lIGludCBmc25vdGlm eV9maWxlX2FyZWFfcGVybShzdHJ1Y3QgZmlsZSAqZmlsZSwgaW50IHBlcm1fbWFzaywKIAkJCQkJ ICBjb25zdCBsb2ZmX3QgKnBwb3MsIHNpemVfdCBjb3VudCkKIHsKLS0gCjIuMzQuMQoK --0000000000001e48560626cfcc8c--