From owner-svn-src-head@freebsd.org Fri Jun 12 04:33:29 2020 Return-Path: Delivered-To: svn-src-head@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 60BA832D88A for ; Fri, 12 Jun 2020 04:33:29 +0000 (UTC) (envelope-from marklmi@yahoo.com) Received: from sonic306-22.consmr.mail.ne1.yahoo.com (sonic306-22.consmr.mail.ne1.yahoo.com [66.163.189.84]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (Client did not present a certificate) by mx1.freebsd.org (Postfix) with ESMTPS id 49jnsg4h38z3dc1 for ; Fri, 12 Jun 2020 04:33:27 +0000 (UTC) (envelope-from marklmi@yahoo.com) X-YMail-OSG: 333vDqQVM1mnfuANn.3JatGMHevXN6svbO_nGtDOnwK6QhB.2zk_ix0iMr_cEnX aUdUyc1BuvvzDniVL7NDHgW9kRX6zjpkXFQW6tjOrHQTNQPafAqB8SezrSF6o8us1ihCZrFxvvU2 Oz5em88XvXJX85bHi0fxMOS9rUtnHx5B6WpFCRAIRR8eoXcIWYng.LG7bzrOjYj6QX5t5zX62NVR yo82FAyR0_orLiLduf_EPBeMg_fK9I0Oj4vbghMO6NjTVLLZYjG9O7of5BS_Fid8NkrEwmjKuxdw NnUCDysBykoAj_g_ogNFik.YWbQ_WJNhAzeeqg0j7XmBWzf1ypE5mWCN3HwCs49k1gLL0Q68dtcp MvjID8mNuhODZCscVPXEqYEMMKDtyLlIIGoYpVQ8WDLF_LgOrDpRQG25VwCUrtVxX5lc3ln3p1i_ ikTRiMT6vXZ7wtfaZ4B.PwyA61s2L7etexhHiKOMahxd.811eP.KTcvxvkg8tbC6yRBzb22QBZTu JFtjeabVZyaQfqhNHLr6tBcYYFuQfvb6_ZMyRa_92k11iohwP3kAbY46O1GSn2NrtBBInjrO2td5 FuYyfgBKqfByLFDkuAycpWvHigjtoyKRupoEtN6Kc6fZCseLTWQMDOjwPVhLdLfyXiAAzOgsRoZF LoBFmM9tBrzJ7h6rVYLM0oqiqZ6.pcB33EdEqJz13N_C0xx6ptcI7cAGGWhjSTH_u7FBKpOfMi1C nbcDiiYiPu5bWfQxFeT3cSZqTQxU5f7sqvNO59XaXA6WDx9Esl_m1kVAT92SGNaBOrypDVrj7.qq VeMMTFHwCNSLXtU0D0u7qAR7F8NBg3iwrIhsAn0bcrlHfo7VCX7MNez4eHGeZT2JGGdAfrXeu_3X KspgMn12NeleG7xcVX49cg0BInsM2h7ARk5lgotUi6UZ5DVCWuuoTK_KUY_fa.bEjkxDA7PjLVvs TUY5sdE9gJNkithpGRQZphmaRFZNNJFBOm1RA0FQ6Xq8mCWjXbInmdFZp0.c.20afoamh0XvKt6s skk.x3rHMSg9hP0VgNHDJR8FjDFCDFyABmgj7.5707XY.riXBR71RYfiXpz0T1KaN.R7gyXCjsO4 K4Fnizin.mwbQ20Ntvoqr3LwnSU0i4DA.aOvcnG.G7DkuyjoaRs2RtYg3uJZmvcw5WwiEN7tAO5X 4z8N0fatFxhM4S1aa6QTOotAzuazoJLZTUGGY5Gq3j9hV1xTTetV6s0KZymkcmrRnTOkQXOwXFfl 9auh8uiL2kgDFE39qsqnW6PdY22fJW1p6xeaecJj.RkdZZ4c_AwXi9BicjHKu2j5Pa2AvE.rPTab kzjCmzQf7wp8nP.7igXYobTh13PMl636ulWhJAuYaPEAgqXXytf067jdC.9Nh2hn3ogfcFJVD_x7 DVldBNZbRzbV7q1_nLpx6hSOC7UmdxeZO6tAnRywOdNHecSRm0skUB_Sk5ZBJkPQJE2o- Received: from sonic.gate.mail.ne1.yahoo.com by sonic306.consmr.mail.ne1.yahoo.com with HTTP; Fri, 12 Jun 2020 04:33:25 +0000 Received: by smtp416.mail.ne1.yahoo.com (VZM Hermes SMTP Server) with ESMTPA ID 2f34606d33939f3e61488b33bfac734b; Fri, 12 Jun 2020 04:33:22 +0000 (UTC) Content-Type: text/plain; charset=us-ascii Mime-Version: 1.0 (Mac OS X Mail 13.4 \(3608.80.23.2.2\)) Subject: Re: svn commit: r360233 - in head: contrib/jemalloc . . . : This partially breaks a 2-socket 32-bit powerpc (old PowerMac G4) based on head -r360311 From: Mark Millard In-Reply-To: Date: Thu, 11 Jun 2020 21:33:20 -0700 Cc: "vangyzen@freebsd.org" , svn-src-head@freebsd.org, FreeBSD Current , FreeBSD Hackers , FreeBSD PowerPC ML , Brandon Bergren Content-Transfer-Encoding: quoted-printable Message-Id: References: <695E6836-F860-4557-B7DE-CC1EDB347F18@yahoo.com> <121B9B09-141B-4DC3-918B-1E7CFB99E779@yahoo.com> <8AAB0462-3FA8-490C-8D8D-7C15B1C9E2DE@yahoo.com> <18E62746-80DB-4195-977D-4FF32D0129EE@yahoo.com> <9562EEE4-62EF-4164-91C0-948CC0432984@yahoo.com> <9B68839B-AEC8-43EE-B3B6-B696A4A57DAE@yahoo.com> <359C9C7D-4106-42B5-AAB5-08EF995B8100@yahoo.com> <20200513105632.06db9e21@titan.knownspace> <20200611155545.55526f7c@ralga.knownspace> <5542B85D-1C3A-41D8-98CE-3C02E990C3EB@yahoo.com> <20200611164216.47f82775@ralga.knownspace> <20200611212532.59f677be@ralga.knownspace> <1EDCA498-0B67-4374-B7CA-1ECDA8EE32AD@yahoo.com> <3605089E-7B5D-4FBA-B0D1-14B789BDF09B@yahoo.com> To: Justin Hibbits X-Mailer: Apple Mail (2.3608.80.23.2.2) X-Rspamd-Queue-Id: 49jnsg4h38z3dc1 X-Spamd-Bar: --- X-Spamd-Result: default: False [-3.38 / 15.00]; TO_DN_EQ_ADDR_SOME(0.00)[]; TO_DN_SOME(0.00)[]; FREEMAIL_FROM(0.00)[yahoo.com]; MV_CASE(0.50)[]; R_SPF_ALLOW(-0.20)[+ptr:yahoo.com]; DKIM_TRACE(0.00)[yahoo.com:+]; DMARC_POLICY_ALLOW(-0.50)[yahoo.com,reject]; RCPT_COUNT_SEVEN(0.00)[7]; NEURAL_HAM_SHORT(-0.87)[-0.866]; FREEMAIL_TO(0.00)[gmail.com]; FROM_EQ_ENVFROM(0.00)[]; RCVD_TLS_LAST(0.00)[]; MIME_TRACE(0.00)[0:+]; FREEMAIL_ENVFROM(0.00)[yahoo.com]; ASN(0.00)[asn:36646, ipnet:66.163.184.0/21, country:US]; MID_RHS_MATCH_FROM(0.00)[]; DWL_DNSWL_NONE(0.00)[yahoo.com:dkim]; ARC_NA(0.00)[]; NEURAL_HAM_MEDIUM(-1.02)[-1.016]; R_DKIM_ALLOW(-0.20)[yahoo.com:s=s2048]; FROM_HAS_DN(0.00)[]; NEURAL_HAM_LONG(-1.00)[-0.996]; MIME_GOOD(-0.10)[text/plain]; TO_MATCH_ENVRCPT_SOME(0.00)[]; RCVD_IN_DNSWL_NONE(0.00)[66.163.189.84:from]; RWL_MAILSPIKE_POSSIBLE(0.00)[66.163.189.84:from]; RCVD_COUNT_TWO(0.00)[2] X-BeenThere: svn-src-head@freebsd.org X-Mailman-Version: 2.1.33 Precedence: list List-Id: SVN commit messages for the src tree for head/-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 12 Jun 2020 04:33:29 -0000 [Yet another oddity.] On 2020-Jun-11, at 21:05, Mark Millard wrote: >=20 > There is another oddity in the code structure, in > that if pt was ever NULL the code would misuse the > NULL before the test for non-NULL is made: >=20 > pt =3D moea_pvo_to_pte(pvo, -1); > . . . > old_pte =3D *pt; >=20 > /* > * If the PVO is in the page table, update that pte as = well. > */ > if (pt !=3D NULL) { >=20 > (I'm not claiming that this explains the panic.) There is another NULL handling oddity that the 64-bit code does not have. I'll show 64 relevant bit code first: pg =3D PHYS_TO_VM_PAGE(pvo->pvo_pte.pa & LPTE_RPGN); =20 . . . =20 if (. . .&& pg !=3D NULL && (pg->a.flags & PGA_EXECUTABLE) =3D=3D 0 && . . .) { if ((pg->oflags & VPO_UNMANAGED) =3D=3D 0) vm_page_aflag_set(pg, PGA_EXECUTABLE); . . . } . . . if (pg !=3D NULL && . . .) { refchg |=3D atomic_readandclear_32(&pg->md.mdpg_attrs); if (refchg & LPTE_CHG) vm_page_dirty(pg); if (refchg & LPTE_REF) vm_page_aflag_set(pg, PGA_REFERENCED); } Note: the 2nd outer-if tests for pg !=3D NULL, just like the first outer-if above does. It avoids potential abuse-of-NULL activity. This is not true of the 32-bit code for "m": m =3D PHYS_TO_VM_PAGE(old_pte.pte_lo & = PTE_RPGN); if (. . . && m !=3D NULL && (m->a.flags & PGA_EXECUTABLE) =3D=3D 0 && . . .) { if ((m->oflags & VPO_UNMANAGED) =3D=3D = 0) vm_page_aflag_set(m, = PGA_EXECUTABLE); moea_syncicache(pvo->pvo_pte.pa & = PTE_RPGN, PAGE_SIZE); } . . . if ((pvo->pvo_vaddr & PVO_MANAGED) && (pvo->pvo_pte.prot & VM_PROT_WRITE)) { refchg =3D = atomic_readandclear_32(&m->md.mdpg_attrs); if (refchg & PTE_CHG) vm_page_dirty(m); if (refchg & PTE_REF) vm_page_aflag_set(m, = PGA_REFERENCED); } The &m->md.mdpg_attrs use apparently could be based on m being NULL because there is no test for m !=3D NULL in the 2nd outer-if. Similarly for the other uses of m in that code block. My guess that that the 2nd outer-if should test something like: . . . if (m !=3D NULL && (pvo->pvo_vaddr & PVO_MANAGED) && (pvo->pvo_pte.prot & VM_PROT_WRITE)) { . . . (Presumes that the pre-existing m !=3D NULL tests are necessary, something that I do not know.) =3D=3D=3D Mark Millard marklmi at yahoo.com ( dsl-only.net went away in early 2018-Mar)