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 669BFC2BD09 for ; Sat, 29 Jun 2024 01:58:31 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 917D06B008C; Fri, 28 Jun 2024 21:58:30 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 8C7266B0095; Fri, 28 Jun 2024 21:58:30 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 78F716B0096; Fri, 28 Jun 2024 21:58:30 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0014.hostedemail.com [216.40.44.14]) by kanga.kvack.org (Postfix) with ESMTP id 5667D6B008C for ; Fri, 28 Jun 2024 21:58:30 -0400 (EDT) Received: from smtpin29.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay08.hostedemail.com (Postfix) with ESMTP id F3044140A53 for ; Sat, 29 Jun 2024 01:58:29 +0000 (UTC) X-FDA: 82282266738.29.F4DEB6D Received: from mail-ed1-f45.google.com (mail-ed1-f45.google.com [209.85.208.45]) by imf02.hostedemail.com (Postfix) with ESMTP id 2DD548000B for ; Sat, 29 Jun 2024 01:58:27 +0000 (UTC) Authentication-Results: imf02.hostedemail.com; dkim=pass header.d=gmail.com header.s=20230601 header.b=XMovwbj7; spf=pass (imf02.hostedemail.com: domain of shy828301@gmail.com designates 209.85.208.45 as permitted sender) smtp.mailfrom=shy828301@gmail.com; dmarc=pass (policy=none) header.from=gmail.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1719626299; 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=ydc3XNQcwpNP0o8GCxBD5SHN8+yjhlyUU+Ft+2wncWk=; b=UHHGfzfC6+wt7ZM/AWqhXvXWMIaubKVPYCK/ct3DyvB/pdFWz+GcQN7b14FscscBJT/CpE OteVR0zVLwijYHXDw3v3iLEIomns7sLSIGB6JeYNTsFyEKXW6QZpJtYPIO09eNZmIoZqUZ HekO+Umdg9t5cnDQM5QPEEpJ5RXYql8= ARC-Authentication-Results: i=1; imf02.hostedemail.com; dkim=pass header.d=gmail.com header.s=20230601 header.b=XMovwbj7; spf=pass (imf02.hostedemail.com: domain of shy828301@gmail.com designates 209.85.208.45 as permitted sender) smtp.mailfrom=shy828301@gmail.com; dmarc=pass (policy=none) header.from=gmail.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1719626299; a=rsa-sha256; cv=none; b=KLMYD+yQFwqfeZjFAYh659WPL/4dxgwbn1b36eAJ5HrFVRCxxmsx+6eTdeF4FkhGCcD/1A tpqBhG2JkcKa4Wp8euYGhnwGz3o6iINgnHDfi7RCbRgtssJktqbAMYkCLDV/teLwAPoJzU pJfq4DoMFGnXZxWewEbUZFm3yifZaI4= Received: by mail-ed1-f45.google.com with SMTP id 4fb4d7f45d1cf-57d280e2d5dso1480700a12.1 for ; Fri, 28 Jun 2024 18:58:27 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1719626307; x=1720231107; 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=ydc3XNQcwpNP0o8GCxBD5SHN8+yjhlyUU+Ft+2wncWk=; b=XMovwbj7SR3D70NJ6qYkOByLN0jEr3um9WTZD3AEQtfn9AF8MOu8CTElGf6ttRLIGK 5h9SKE0deNGy4Y15KQdtst2/pDrswjrnf3acNsdvsQGmxkgpiSlMLmZ/K7YQQ64S8OBK gHDEGkvG7vAKY38ebGaJ/dECZSQZH0S/dJ2Yjc9UXZUip3Q3iFTbuQx7snmD5bNr17mT h/ekV4adHvrEoQwBPotSRWBVNHiZv7fODJKO4/G1TTOVNHRVdGl+DvaRxBkwfvgOfjeL c7/7EhnsyRwVU6HdaX5DAP1wrnPJgNKjG6yqLmwLXOkRDA1Nw0tZq7LbGt7ahj7bZ5kf FYqQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1719626307; x=1720231107; 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=ydc3XNQcwpNP0o8GCxBD5SHN8+yjhlyUU+Ft+2wncWk=; b=Vi6tz0Pd9utKG8wICtrajgUEMQHdVP26OHSFU3ifZ1Gwp8vlDuD4ctGM2S0hqMauiB zJ+X49OtXCa3wa/64/GTu+kbrPv8qtswaGdJBzU8opamltQB3EYKrJQ5YhlhSv6TjKZm UM4T5S+qMYRb++XJqntDjuNxIlmszsCdzkH7qmSsp3BDCEeElW9nwCrrjYW7KjVcuP62 a8xSH/o+0va3WFQ91TGOvsJq8EuJXUDwexDE9dhI2YlebC3GQRs4WXgN9bHBgjqezvq4 41NinWX5C/J7zo6mCzb3pkGd0Ia+75pskwDndfyIpsikflrhenrzhcf+r5rVVZdNZLyj o+bw== X-Forwarded-Encrypted: i=1; AJvYcCX3/DWrVlvpxw5yRNi85E6Iu54CHXoVquCvMknuXm3xFhK/obymSog1kJ5EXmc0+igVMW/+AjP9SdBmogZ8d45UjUI= X-Gm-Message-State: AOJu0YwnbFoT9qWaKw4IWyf2yjcWmqj5jNr39fVbiIIwDlfDRvPACHGZ o+FDcAGVwjuLUzsRDqdjLKKvTY1Zac5jH8Fz9VcS+VtF5YmvGS3jD1Fk3+YfrcUlabvPprnTGz4 44sh16Ul+MaVHUEW/kiD0P1l4Wmk= X-Google-Smtp-Source: AGHT+IEibOx3FHKInIg3PRzYy84X+MtDeITML373b/YpBm8Kp1ApgP6GQyw0I6bs3/WH+56PYUSs/VQjUZKGSpiNQO8= X-Received: by 2002:a50:9358:0:b0:57c:8022:a3db with SMTP id 4fb4d7f45d1cf-57d4bd5651amr11609512a12.6.1719626306328; Fri, 28 Jun 2024 18:58:26 -0700 (PDT) MIME-Version: 1.0 References: <202406290729.21FzkVlI-lkp@intel.com> In-Reply-To: <202406290729.21FzkVlI-lkp@intel.com> From: Yang Shi Date: Fri, 28 Jun 2024 18:58:14 -0700 Message-ID: Subject: Re: [linux-next:master 9137/9689] mm/gup.c:476:25: error: implicit declaration of function 'try_grab_folio_fast'; did you mean 'try_grab_folio'? To: kernel test robot Cc: Yang Shi , oe-kbuild-all@lists.linux.dev, Linux Memory Management List , Andrew Morton Content-Type: multipart/mixed; boundary="00000000000022b1e4061bfdb374" X-Rspamd-Server: rspam03 X-Rspam-User: X-Rspamd-Queue-Id: 2DD548000B X-Stat-Signature: eiws7wyczmaaj7nexymfb9kawdrmr1za X-HE-Tag: 1719626307-689295 X-HE-Meta: U2FsdGVkX1/pf6Y/wo2MOVMf/dPRonYpyOxugtwy6161gVxKhk9udUjfa8eXf7wDZBH0IU+sGrscx+Mu7HCdHEiHE2qUQfLCmUyjkWjjPWFqxXkHniATlk2J7uZNg78nzAXhgUOXJZqqi2TPdyJJ0zfjD6HVl1r2UI0lagiA5pBGmmDbrQBteETJHhzfssy6EtyeHZA2/HYkZVFI37yD6Pm8WrtJ0si0jL9aLIt5je46XkOOyd8ycOv7cBrI8CGdVILLT4Jx7Xyi4QRq1+wK8HCOFdazsCI8fdPoxPDhtvORkL1/eB/TzasXdvMwI60VqQFgX35/pdz4uzMnfh/58BHDXQsFz7hZ0divmT+z3WSU8m49QKrIYpWBBExxKA0pKj6kUG7o0rJZJaFWWVmTveAOTNcYv8GX6UiK2UOmAFC5U25XpHZa4p3YEfdcQ0WjZl36YlRJxwoONYCCc3R3iicB+XWy+iHDQkAm6jqVUzhiyD54IvcHM9ZBRZygobxe8T8/19FZl9YOQiyN7ixHJSXAkXrrixMjGWvzmQWZmHI1TxsUxGkheh9mB7gE5PfqwQWchr6VoBfFdvabO7+0oDtYVPGgMLdeB8Lx0rbvFWKicAmAtDO3IYvloZUSEsqVMAwKE+WslyVYqhcc5LA8VjoBcS/OFNops2CS36P51BLeYMOhhdAsYs03enn6IvpOT7Q2//fFA6vIKbXjEzElX2EAbUG7ELj9kru9e7JaYXFcduU93Blb32Lnd2cKAsUIWUb0VTdqIDjWRyXN45LGAHFrwwOcEiOUIPHVnKHYMIY6rnr2Y4zsanVHkr++8+A+a8yHY89Vb1l92t3E2DZ38RrWLM3Nm5OVePqMIJ1PeV8tZ/9887ezt7UTK0T7WybL4Xjz/2CrBxTNzlzaB8S2thUGW8g0zosew/TAMwLHQhCp4hvWVDdDo169VbsPZzaiVJhga7gTNI0J4DoIAXx 4omQdF8d 2Oma4uoKZ4ddwFNUP0uYK8owhbl5spYGWCQ2YBk1e+wxJiJK3FwQP5sT7aIfjO5qPt4A1XwB+T90+UMrfrZhelpwGicPBWStGXmsIdythGVtT0RD2fUbD64v3KCDtsC+HsXxDVRzrOw7Z5bC8jouhxdGFxTgVmb1vQBV8rDDXHuy9+IA4qB+IUn64hRBn3JU3/szx4riQlrDKJdbvnarKCYIgvPiiHoVsylOC2I6lfhHBXmymYKJpw7Id+FgMRs3dwBOaicPfgMGybgSiGDrVuu80fLkyzNKdY0YKqRc5NtO9C0jBJ4FJpQcX0JzPKhBM+fJklyZup8rrJi/2O47v8Cd+V+oQX80sJAf9vA7WgE8H15CYlYY4gNmGBXKS17NfMI9x2ddGXdXsYX9Bvge1xQmDkk0coJ6cNGSUWQWFSizNBim5ApcFPk54/c2BMkELYFTl9gpIjQejsbBddrMsJkuSAWA4IdywEW4sJfpjrZsNKC6kqC+gDRrmktYLiYX+srkqw6XRYh3HaOAtRbVkHW64vHfoIUOcnFHdP9Y2LorWGW8hsEHIfe+t6LdqCQYx8gBmhw3Jsa4FLkQlSy8a+q0pig== 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: --00000000000022b1e4061bfdb374 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable On Fri, Jun 28, 2024 at 5:01=E2=80=AFPM kernel test robot w= rote: > > tree: https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.g= it master > head: 1eb586a9782cde8e5091b9de74603e0a8386b09e > commit: ee3fe497bdf0c7cb6fbec346f36aa1f9b1dfe6dd [9137/9689] mm: gup: do = not call try_grab_folio() in slow path > config: powerpc-randconfig-r005-20221108 > compiler: powerpc-linux-gcc (GCC) 13.2.0 > reproduce (this is a W=3D1 build): > > If you fix the issue in a separate patch/commit (i.e. not just a new vers= ion of > the same patch/commit), kindly add following tags > | Reported-by: kernel test robot > | Closes: https://lore.kernel.org/oe-kbuild-all/202406290729.21FzkVlI-lkp= @intel.com/ > > All error/warnings (new ones prefixed by >>): > > mm/gup.c: In function 'gup_hugepte': > >> mm/gup.c:476:25: error: implicit declaration of function 'try_grab_fol= io_fast'; did you mean 'try_grab_folio'? [-Werror=3Dimplicit-function-decla= ration] The definition of try_grab_folio_fast() should be protected by CONFIG_ARCH_HAS_HUGEPD || CONFIG_HAVE_GUP_FAST. Andrew, Please apply the attached fix on top of it. The reproducer requires x86 machine since the cross build tool is on x86, but I don't have a x86 machine by hand right now. But I think the patch should fix it. > 476 | folio =3D try_grab_folio_fast(page, refs, flag= s); > | ^~~~~~~~~~~~~~~~~~~ > | try_grab_folio > >> mm/gup.c:476:23: warning: assignment to 'struct folio *' from 'int' ma= kes pointer from integer without a cast [-Wint-conversion] > 476 | folio =3D try_grab_folio_fast(page, refs, flag= s); > | ^ > mm/gup.c: At top level: > >> mm/gup.c:2748:22: error: conflicting types for 'try_grab_folio_fast'; = have 'struct folio *(struct page *, int, unsigned int)' > 2748 | static struct folio *try_grab_folio_fast(struct page *page, in= t refs, > | ^~~~~~~~~~~~~~~~~~~ > mm/gup.c:476:25: note: previous implicit declaration of 'try_grab_foli= o_fast' with type 'int()' > 476 | folio =3D try_grab_folio_fast(page, refs, flag= s); > | ^~~~~~~~~~~~~~~~~~~ > cc1: some warnings being treated as errors > > > vim +476 mm/gup.c > > 441 > 442 /* > 443 * Returns 1 if succeeded, 0 if failed, -EMLINK if unshare needed= . > 444 * > 445 * NOTE: for the same entry, gup-fast and gup-slow can return dif= ferent > 446 * results (0 v.s. -EMLINK) depending on whether vma is available= . This is > 447 * the expected behavior, where we simply want gup-fast to fallba= ck to > 448 * gup-slow to take the vma reference first. > 449 */ > 450 static int gup_hugepte(struct vm_area_struct *vma, pte_t *ptep, u= nsigned long sz, > 451 unsigned long addr, unsigned long end, uns= igned int flags, > 452 struct page **pages, int *nr, bool fast) > 453 { > 454 unsigned long pte_end; > 455 struct page *page; > 456 struct folio *folio; > 457 pte_t pte; > 458 int refs; > 459 > 460 pte_end =3D (addr + sz) & ~(sz-1); > 461 if (pte_end < end) > 462 end =3D pte_end; > 463 > 464 pte =3D huge_ptep_get(ptep); > 465 > 466 if (!pte_access_permitted(pte, flags & FOLL_WRITE)) > 467 return 0; > 468 > 469 /* hugepages are never "special" */ > 470 VM_BUG_ON(!pfn_valid(pte_pfn(pte))); > 471 > 472 page =3D pte_page(pte); > 473 refs =3D record_subpages(page, sz, addr, end, pages + *nr= ); > 474 > 475 if (fast) { > > 476 folio =3D try_grab_folio_fast(page, refs, flags); > 477 if (!folio) > 478 return 0; > 479 } else { > 480 folio =3D page_folio(page); > 481 if (try_grab_folio(folio, refs, flags)) > 482 return 0; > 483 } > 484 > 485 if (unlikely(pte_val(pte) !=3D pte_val(ptep_get(ptep)))) = { > 486 gup_put_folio(folio, refs, flags); > 487 return 0; > 488 } > 489 > 490 if (!pte_write(pte) && gup_must_unshare(vma, flags, &foli= o->page)) { > 491 gup_put_folio(folio, refs, flags); > 492 return -EMLINK; > 493 } > 494 > 495 *nr +=3D refs; > 496 folio_set_referenced(folio); > 497 return 1; > 498 } > 499 > > -- > 0-DAY CI Kernel Test Service > https://github.com/intel/lkp-tests/wiki --00000000000022b1e4061bfdb374 Content-Type: application/octet-stream; name="mm-gup-stop-abusing-try_grab_folio-fix.patch" Content-Disposition: attachment; filename="mm-gup-stop-abusing-try_grab_folio-fix.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_lxzgoyt40 ZGlmZiAtLWdpdCBhL21tL2d1cC5jIGIvbW0vZ3VwLmMKaW5kZXggZTY1NzczY2U0NjIyLi5mZGQz YjI3MTlmMzMgMTAwNjQ0Ci0tLSBhL21tL2d1cC5jCisrKyBiL21tL2d1cC5jCkBAIC00MjcsNiAr NDI3LDEwMiBAQCBzdGF0aWMgaW50IHJlY29yZF9zdWJwYWdlcyhzdHJ1Y3QgcGFnZSAqcGFnZSwg dW5zaWduZWQgbG9uZyBzeiwKIAogCXJldHVybiBucjsKIH0KKworLyoqCisgKiB0cnlfZ3JhYl9m b2xpb19mYXN0KCkgLSBBdHRlbXB0IHRvIGdldCBvciBwaW4gYSBmb2xpbyBpbiBmYXN0IHBhdGgu CisgKiBAcGFnZTogIHBvaW50ZXIgdG8gcGFnZSB0byBiZSBncmFiYmVkCisgKiBAcmVmczogIHRo ZSB2YWx1ZSB0byAoZWZmZWN0aXZlbHkpIGFkZCB0byB0aGUgZm9saW8ncyByZWZjb3VudAorICog QGZsYWdzOiBndXAgZmxhZ3M6IHRoZXNlIGFyZSB0aGUgRk9MTF8qIGZsYWcgdmFsdWVzLgorICoK KyAqICJncmFiIiBuYW1lcyBpbiB0aGlzIGZpbGUgbWVhbiwgImxvb2sgYXQgZmxhZ3MgdG8gZGVj aWRlIHdoZXRoZXIgdG8gdXNlCisgKiBGT0xMX1BJTiBvciBGT0xMX0dFVCBiZWhhdmlvciwgd2hl biBpbmNyZW1lbnRpbmcgdGhlIGZvbGlvJ3MgcmVmY291bnQuCisgKgorICogRWl0aGVyIEZPTExf UElOIG9yIEZPTExfR0VUIChvciBuZWl0aGVyKSBtdXN0IGJlIHNldCwgYnV0IG5vdCBib3RoIGF0 IHRoZQorICogc2FtZSB0aW1lLiAoVGhhdCdzIHRydWUgdGhyb3VnaG91dCB0aGUgZ2V0X3VzZXJf cGFnZXMqKCkgYW5kCisgKiBwaW5fdXNlcl9wYWdlcyooKSBBUElzLikgQ2FzZXM6CisgKgorICog ICAgRk9MTF9HRVQ6IGZvbGlvJ3MgcmVmY291bnQgd2lsbCBiZSBpbmNyZW1lbnRlZCBieSBAcmVm cy4KKyAqCisgKiAgICBGT0xMX1BJTiBvbiBsYXJnZSBmb2xpb3M6IGZvbGlvJ3MgcmVmY291bnQg d2lsbCBiZSBpbmNyZW1lbnRlZCBieQorICogICAgQHJlZnMsIGFuZCBpdHMgcGluY291bnQgd2ls bCBiZSBpbmNyZW1lbnRlZCBieSBAcmVmcy4KKyAqCisgKiAgICBGT0xMX1BJTiBvbiBzaW5nbGUt cGFnZSBmb2xpb3M6IGZvbGlvJ3MgcmVmY291bnQgd2lsbCBiZSBpbmNyZW1lbnRlZCBieQorICog ICAgQHJlZnMgKiBHVVBfUElOX0NPVU5USU5HX0JJQVMuCisgKgorICogUmV0dXJuOiBUaGUgZm9s aW8gY29udGFpbmluZyBAcGFnZSAod2l0aCByZWZjb3VudCBhcHByb3ByaWF0ZWx5CisgKiBpbmNy ZW1lbnRlZCkgZm9yIHN1Y2Nlc3MsIG9yIE5VTEwgdXBvbiBmYWlsdXJlLiBJZiBuZWl0aGVyIEZP TExfR0VUCisgKiBub3IgRk9MTF9QSU4gd2FzIHNldCwgdGhhdCdzIGNvbnNpZGVyZWQgZmFpbHVy ZSwgYW5kIGZ1cnRoZXJtb3JlLAorICogYSBsaWtlbHkgYnVnIGluIHRoZSBjYWxsZXIsIHNvIGEg d2FybmluZyBpcyBhbHNvIGVtaXR0ZWQuCisgKgorICogSXQgdXNlcyBhZGQgcmVmIHVubGVzcyB6 ZXJvIHRvIGVsZXZhdGUgdGhlIGZvbGlvIHJlZmNvdW50IGFuZCBtdXN0IGJlIGNhbGxlZAorICog aW4gZmFzdCBwYXRoIG9ubHkuCisgKi8KK3N0YXRpYyBzdHJ1Y3QgZm9saW8gKnRyeV9ncmFiX2Zv bGlvX2Zhc3Qoc3RydWN0IHBhZ2UgKnBhZ2UsIGludCByZWZzLAorCQkJCQkgdW5zaWduZWQgaW50 IGZsYWdzKQoreworCXN0cnVjdCBmb2xpbyAqZm9saW87CisKKwkvKiBSYWlzZSB3YXJuIGlmIGl0 IGlzIG5vdCBjYWxsZWQgaW4gZmFzdCBHVVAgKi8KKwlWTV9XQVJOX09OX09OQ0UoIWlycXNfZGlz YWJsZWQoKSk7CisKKwlpZiAoV0FSTl9PTl9PTkNFKChmbGFncyAmIChGT0xMX0dFVCB8IEZPTExf UElOKSkgPT0gMCkpCisJCXJldHVybiBOVUxMOworCisJaWYgKHVubGlrZWx5KCEoZmxhZ3MgJiBG T0xMX1BDSV9QMlBETUEpICYmIGlzX3BjaV9wMnBkbWFfcGFnZShwYWdlKSkpCisJCXJldHVybiBO VUxMOworCisJaWYgKGZsYWdzICYgRk9MTF9HRVQpCisJCXJldHVybiB0cnlfZ2V0X2ZvbGlvKHBh Z2UsIHJlZnMpOworCisJLyogRk9MTF9QSU4gaXMgc2V0ICovCisKKwkvKgorCSAqIERvbid0IHRh a2UgYSBwaW4gb24gdGhlIHplcm8gcGFnZSAtIGl0J3Mgbm90IGdvaW5nIGFueXdoZXJlCisJICog YW5kIGl0IGlzIHVzZWQgaW4gYSAqbG90KiBvZiBwbGFjZXMuCisJICovCisJaWYgKGlzX3plcm9f cGFnZShwYWdlKSkKKwkJcmV0dXJuIHBhZ2VfZm9saW8ocGFnZSk7CisKKwlmb2xpbyA9IHRyeV9n ZXRfZm9saW8ocGFnZSwgcmVmcyk7CisJaWYgKCFmb2xpbykKKwkJcmV0dXJuIE5VTEw7CisKKwkv KgorCSAqIENhbid0IGRvIEZPTExfTE9OR1RFUk0gKyBGT0xMX1BJTiBndXAgZmFzdCBwYXRoIGlm IG5vdCBpbiBhCisJICogcmlnaHQgem9uZSwgc28gZmFpbCBhbmQgbGV0IHRoZSBjYWxsZXIgZmFs bCBiYWNrIHRvIHRoZSBzbG93CisJICogcGF0aC4KKwkgKi8KKwlpZiAodW5saWtlbHkoKGZsYWdz ICYgRk9MTF9MT05HVEVSTSkgJiYKKwkJICAgICAhZm9saW9faXNfbG9uZ3Rlcm1fcGlubmFibGUo Zm9saW8pKSkgeworCQlpZiAoIXB1dF9kZXZtYXBfbWFuYWdlZF9mb2xpb19yZWZzKGZvbGlvLCBy ZWZzKSkKKwkJCWZvbGlvX3B1dF9yZWZzKGZvbGlvLCByZWZzKTsKKwkJcmV0dXJuIE5VTEw7CisJ fQorCisJLyoKKwkgKiBXaGVuIHBpbm5pbmcgYSBsYXJnZSBmb2xpbywgdXNlIGFuIGV4YWN0IGNv dW50IHRvIHRyYWNrIGl0LgorCSAqCisJICogSG93ZXZlciwgYmUgc3VyZSB0byAqYWxzbyogaW5j cmVtZW50IHRoZSBub3JtYWwgZm9saW8KKwkgKiByZWZjb3VudCBmaWVsZCBhdCBsZWFzdCBvbmNl LCBzbyB0aGF0IHRoZSBmb2xpbyByZWFsbHkKKwkgKiBpcyBwaW5uZWQuICBUaGF0J3Mgd2h5IHRo ZSByZWZjb3VudCBmcm9tIHRoZSBlYXJsaWVyCisJICogdHJ5X2dldF9mb2xpbygpIGlzIGxlZnQg aW50YWN0LgorCSAqLworCWlmIChmb2xpb190ZXN0X2xhcmdlKGZvbGlvKSkKKwkJYXRvbWljX2Fk ZChyZWZzLCAmZm9saW8tPl9waW5jb3VudCk7CisJZWxzZQorCQlmb2xpb19yZWZfYWRkKGZvbGlv LAorCQkJCXJlZnMgKiAoR1VQX1BJTl9DT1VOVElOR19CSUFTIC0gMSkpOworCS8qCisJICogQWRq dXN0IHRoZSBwaW5jb3VudCBiZWZvcmUgcmUtY2hlY2tpbmcgdGhlIFBURSBmb3IgY2hhbmdlcy4K KwkgKiBUaGlzIGlzIGVzc2VudGlhbGx5IGEgc21wX21iKCkgYW5kIGlzIHBhaXJlZCB3aXRoIGEg bWVtb3J5CisJICogYmFycmllciBpbiBmb2xpb190cnlfc2hhcmVfYW5vbl9ybWFwXyooKS4KKwkg Ki8KKwlzbXBfbWJfX2FmdGVyX2F0b21pYygpOworCisJbm9kZV9zdGF0X21vZF9mb2xpbyhmb2xp bywgTlJfRk9MTF9QSU5fQUNRVUlSRUQsIHJlZnMpOworCisJcmV0dXJuIGZvbGlvOworfQogI2Vu ZGlmCS8qIENPTkZJR19BUkNIX0hBU19IVUdFUEQgfHwgQ09ORklHX0hBVkVfR1VQX0ZBU1QgKi8K IAogI2lmZGVmIENPTkZJR19BUkNIX0hBU19IVUdFUEQKQEAgLTI3MTUsMTAyICsyODExLDYgQEAg RVhQT1JUX1NZTUJPTChnZXRfdXNlcl9wYWdlc191bmxvY2tlZCk7CiAgKiBUaGlzIGNvZGUgaXMg YmFzZWQgaGVhdmlseSBvbiB0aGUgUG93ZXJQQyBpbXBsZW1lbnRhdGlvbiBieSBOaWNrIFBpZ2dp bi4KICAqLwogI2lmZGVmIENPTkZJR19IQVZFX0dVUF9GQVNUCi0vKioKLSAqIHRyeV9ncmFiX2Zv bGlvX2Zhc3QoKSAtIEF0dGVtcHQgdG8gZ2V0IG9yIHBpbiBhIGZvbGlvIGluIGZhc3QgcGF0aC4K LSAqIEBwYWdlOiAgcG9pbnRlciB0byBwYWdlIHRvIGJlIGdyYWJiZWQKLSAqIEByZWZzOiAgdGhl IHZhbHVlIHRvIChlZmZlY3RpdmVseSkgYWRkIHRvIHRoZSBmb2xpbydzIHJlZmNvdW50Ci0gKiBA ZmxhZ3M6IGd1cCBmbGFnczogdGhlc2UgYXJlIHRoZSBGT0xMXyogZmxhZyB2YWx1ZXMuCi0gKgot ICogImdyYWIiIG5hbWVzIGluIHRoaXMgZmlsZSBtZWFuLCAibG9vayBhdCBmbGFncyB0byBkZWNp ZGUgd2hldGhlciB0byB1c2UKLSAqIEZPTExfUElOIG9yIEZPTExfR0VUIGJlaGF2aW9yLCB3aGVu IGluY3JlbWVudGluZyB0aGUgZm9saW8ncyByZWZjb3VudC4KLSAqCi0gKiBFaXRoZXIgRk9MTF9Q SU4gb3IgRk9MTF9HRVQgKG9yIG5laXRoZXIpIG11c3QgYmUgc2V0LCBidXQgbm90IGJvdGggYXQg dGhlCi0gKiBzYW1lIHRpbWUuIChUaGF0J3MgdHJ1ZSB0aHJvdWdob3V0IHRoZSBnZXRfdXNlcl9w YWdlcyooKSBhbmQKLSAqIHBpbl91c2VyX3BhZ2VzKigpIEFQSXMuKSBDYXNlczoKLSAqCi0gKiAg ICBGT0xMX0dFVDogZm9saW8ncyByZWZjb3VudCB3aWxsIGJlIGluY3JlbWVudGVkIGJ5IEByZWZz LgotICoKLSAqICAgIEZPTExfUElOIG9uIGxhcmdlIGZvbGlvczogZm9saW8ncyByZWZjb3VudCB3 aWxsIGJlIGluY3JlbWVudGVkIGJ5Ci0gKiAgICBAcmVmcywgYW5kIGl0cyBwaW5jb3VudCB3aWxs IGJlIGluY3JlbWVudGVkIGJ5IEByZWZzLgotICoKLSAqICAgIEZPTExfUElOIG9uIHNpbmdsZS1w YWdlIGZvbGlvczogZm9saW8ncyByZWZjb3VudCB3aWxsIGJlIGluY3JlbWVudGVkIGJ5Ci0gKiAg ICBAcmVmcyAqIEdVUF9QSU5fQ09VTlRJTkdfQklBUy4KLSAqCi0gKiBSZXR1cm46IFRoZSBmb2xp byBjb250YWluaW5nIEBwYWdlICh3aXRoIHJlZmNvdW50IGFwcHJvcHJpYXRlbHkKLSAqIGluY3Jl bWVudGVkKSBmb3Igc3VjY2Vzcywgb3IgTlVMTCB1cG9uIGZhaWx1cmUuIElmIG5laXRoZXIgRk9M TF9HRVQKLSAqIG5vciBGT0xMX1BJTiB3YXMgc2V0LCB0aGF0J3MgY29uc2lkZXJlZCBmYWlsdXJl LCBhbmQgZnVydGhlcm1vcmUsCi0gKiBhIGxpa2VseSBidWcgaW4gdGhlIGNhbGxlciwgc28gYSB3 YXJuaW5nIGlzIGFsc28gZW1pdHRlZC4KLSAqCi0gKiBJdCB1c2VzIGFkZCByZWYgdW5sZXNzIHpl cm8gdG8gZWxldmF0ZSB0aGUgZm9saW8gcmVmY291bnQgYW5kIG11c3QgYmUgY2FsbGVkCi0gKiBp biBmYXN0IHBhdGggb25seS4KLSAqLwotc3RhdGljIHN0cnVjdCBmb2xpbyAqdHJ5X2dyYWJfZm9s aW9fZmFzdChzdHJ1Y3QgcGFnZSAqcGFnZSwgaW50IHJlZnMsCi0JCQkJCSB1bnNpZ25lZCBpbnQg ZmxhZ3MpCi17Ci0Jc3RydWN0IGZvbGlvICpmb2xpbzsKLQotCS8qIFJhaXNlIHdhcm4gaWYgaXQg aXMgbm90IGNhbGxlZCBpbiBmYXN0IEdVUCAqLwotCVZNX1dBUk5fT05fT05DRSghaXJxc19kaXNh YmxlZCgpKTsKLQotCWlmIChXQVJOX09OX09OQ0UoKGZsYWdzICYgKEZPTExfR0VUIHwgRk9MTF9Q SU4pKSA9PSAwKSkKLQkJcmV0dXJuIE5VTEw7Ci0KLQlpZiAodW5saWtlbHkoIShmbGFncyAmIEZP TExfUENJX1AyUERNQSkgJiYgaXNfcGNpX3AycGRtYV9wYWdlKHBhZ2UpKSkKLQkJcmV0dXJuIE5V TEw7Ci0KLQlpZiAoZmxhZ3MgJiBGT0xMX0dFVCkKLQkJcmV0dXJuIHRyeV9nZXRfZm9saW8ocGFn ZSwgcmVmcyk7Ci0KLQkvKiBGT0xMX1BJTiBpcyBzZXQgKi8KLQotCS8qCi0JICogRG9uJ3QgdGFr ZSBhIHBpbiBvbiB0aGUgemVybyBwYWdlIC0gaXQncyBub3QgZ29pbmcgYW55d2hlcmUKLQkgKiBh bmQgaXQgaXMgdXNlZCBpbiBhICpsb3QqIG9mIHBsYWNlcy4KLQkgKi8KLQlpZiAoaXNfemVyb19w YWdlKHBhZ2UpKQotCQlyZXR1cm4gcGFnZV9mb2xpbyhwYWdlKTsKLQotCWZvbGlvID0gdHJ5X2dl dF9mb2xpbyhwYWdlLCByZWZzKTsKLQlpZiAoIWZvbGlvKQotCQlyZXR1cm4gTlVMTDsKLQotCS8q Ci0JICogQ2FuJ3QgZG8gRk9MTF9MT05HVEVSTSArIEZPTExfUElOIGd1cCBmYXN0IHBhdGggaWYg bm90IGluIGEKLQkgKiByaWdodCB6b25lLCBzbyBmYWlsIGFuZCBsZXQgdGhlIGNhbGxlciBmYWxs IGJhY2sgdG8gdGhlIHNsb3cKLQkgKiBwYXRoLgotCSAqLwotCWlmICh1bmxpa2VseSgoZmxhZ3Mg JiBGT0xMX0xPTkdURVJNKSAmJgotCQkgICAgICFmb2xpb19pc19sb25ndGVybV9waW5uYWJsZShm b2xpbykpKSB7Ci0JCWlmICghcHV0X2Rldm1hcF9tYW5hZ2VkX2ZvbGlvX3JlZnMoZm9saW8sIHJl ZnMpKQotCQkJZm9saW9fcHV0X3JlZnMoZm9saW8sIHJlZnMpOwotCQlyZXR1cm4gTlVMTDsKLQl9 Ci0KLQkvKgotCSAqIFdoZW4gcGlubmluZyBhIGxhcmdlIGZvbGlvLCB1c2UgYW4gZXhhY3QgY291 bnQgdG8gdHJhY2sgaXQuCi0JICoKLQkgKiBIb3dldmVyLCBiZSBzdXJlIHRvICphbHNvKiBpbmNy ZW1lbnQgdGhlIG5vcm1hbCBmb2xpbwotCSAqIHJlZmNvdW50IGZpZWxkIGF0IGxlYXN0IG9uY2Us IHNvIHRoYXQgdGhlIGZvbGlvIHJlYWxseQotCSAqIGlzIHBpbm5lZC4gIFRoYXQncyB3aHkgdGhl IHJlZmNvdW50IGZyb20gdGhlIGVhcmxpZXIKLQkgKiB0cnlfZ2V0X2ZvbGlvKCkgaXMgbGVmdCBp bnRhY3QuCi0JICovCi0JaWYgKGZvbGlvX3Rlc3RfbGFyZ2UoZm9saW8pKQotCQlhdG9taWNfYWRk KHJlZnMsICZmb2xpby0+X3BpbmNvdW50KTsKLQllbHNlCi0JCWZvbGlvX3JlZl9hZGQoZm9saW8s Ci0JCQkJcmVmcyAqIChHVVBfUElOX0NPVU5USU5HX0JJQVMgLSAxKSk7Ci0JLyoKLQkgKiBBZGp1 c3QgdGhlIHBpbmNvdW50IGJlZm9yZSByZS1jaGVja2luZyB0aGUgUFRFIGZvciBjaGFuZ2VzLgot CSAqIFRoaXMgaXMgZXNzZW50aWFsbHkgYSBzbXBfbWIoKSBhbmQgaXMgcGFpcmVkIHdpdGggYSBt ZW1vcnkKLQkgKiBiYXJyaWVyIGluIGZvbGlvX3RyeV9zaGFyZV9hbm9uX3JtYXBfKigpLgotCSAq LwotCXNtcF9tYl9fYWZ0ZXJfYXRvbWljKCk7Ci0KLQlub2RlX3N0YXRfbW9kX2ZvbGlvKGZvbGlv LCBOUl9GT0xMX1BJTl9BQ1FVSVJFRCwgcmVmcyk7Ci0KLQlyZXR1cm4gZm9saW87Ci19Ci0KIC8q CiAgKiBVc2VkIGluIHRoZSBHVVAtZmFzdCBwYXRoIHRvIGRldGVybWluZSB3aGV0aGVyIEdVUCBp cyBwZXJtaXR0ZWQgdG8gd29yayBvbgogICogYSBzcGVjaWZpYyBmb2xpby4K --00000000000022b1e4061bfdb374--