From mboxrd@z Thu Jan 1 00:00:00 1970 X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on inbox.vuxu.org X-Spam-Level: X-Spam-Status: No, score=-3.4 required=5.0 tests=DKIM_SIGNED,DKIM_VALID, DKIM_VALID_AU,FREEMAIL_FROM,MAILING_LIST_MULTI,RCVD_IN_DNSWL_MED, RCVD_IN_MSPIKE_H3,RCVD_IN_MSPIKE_WL autolearn=ham autolearn_force=no version=3.4.4 Received: (qmail 17373 invoked from network); 1 Sep 2020 18:20:53 -0000 Received: from mother.openwall.net (195.42.179.200) by inbox.vuxu.org with ESMTPUTF8; 1 Sep 2020 18:20:53 -0000 Received: (qmail 22371 invoked by uid 550); 1 Sep 2020 18:20:49 -0000 Mailing-List: contact musl-help@lists.openwall.com; run by ezmlm Precedence: bulk List-Post: List-Help: List-Unsubscribe: List-Subscribe: List-ID: Reply-To: musl@lists.openwall.com Received: (qmail 22348 invoked from network); 1 Sep 2020 18:20:49 -0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=gmx.net; s=badeba3b8450; t=1598984437; bh=jX2ly+h8SBQ0OOsnGlkoGJop/LbybLxbMJxqyBbb2Bw=; h=X-UI-Sender-Class:Date:From:To:Subject:References:In-Reply-To; b=gOvf4Y1167VCDMqhaZOAlH+tavIi67ink1lL4PNhSPq2ATj+cXWpKPS3jcbgwLWa7 ZI9J2g9uQM9qY0+Lek5hGvsV2Tf5X/R7OnGo3iEduCoGbx/EAoVLlujYBXL1VrwGEi WiwTTJn359INKGC8yD744Ln9aFyUxehkmyysQl4c= X-UI-Sender-Class: 01bb95c1-4bf8-414a-932a-4f6e2808ef9c Date: Tue, 1 Sep 2020 20:20:37 +0200 From: Markus Wichmann To: musl@lists.openwall.com Message-ID: <20200901182037.GA2738@voyager> References: <3C00D395-838B-4DB0-99FC-3947F1BCF054@icloud.com> <20200831010710.GH3265@brightrain.aerifal.cx> <20200831014145.GI3265@brightrain.aerifal.cx> <20200831025138.GK3265@brightrain.aerifal.cx> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20200831025138.GK3265@brightrain.aerifal.cx> User-Agent: Mutt/1.9.4 (2018-02-28) X-Provags-ID: V03:K1:vt9gtCvYaPFsUbzDiuP8ObiY+wPSBW/G3Watw23GoOEJJix1Hnp yFIAVk76cn7/F3azMFQXqaOznr9hQwT/k/OGfMzs5HFae030WaqMH5sIC/tq0spvrqDx42l cFqTTW6Vl19JrMpCJ6aUJoiO02+hHBpA+9eVkMBdxaONqGZ0lSvhoiPV//gD7k6aDgzNkiw TaqCC1qm87axmAs2xuioA== X-UI-Out-Filterresults: notjunk:1;V03:K0:h5UpEAn/b8U=:6HVxGGtjhktK1Dc2yyDkX7 MpzprmesfkJMostwj/27sH1t3kGZJuT/iKay6uiA/Bjnsdh2Vw3GElMwGeUkyM5Ykyi7XTNVL P7HHgaKNS9jOsLWwtfJG4uAqjGyU98zJ9hFLxIguLT2TWc3APWC2Ng871wjp9E0Gz3yRBP8Nc 6Av/BBOvNkBPMAEQIGpjIXstdEFM4wVJ4/8ksCTWOZFFjXWezArFocJRWYZ8q4qmc5lqqVAPu dqfPTa0fLdqwNUS87FbynJQwKPfgu9wfMfsVVPflYZbMUizKisgAupk0qxBIFy6UZPIUQ5CD/ eYX/ytk6xUqy1Huw4ukF9ANtk0rwh0gPdG/hr2d3WHm5yr1YN8b5oxEB5p5miG0Km7mnWlxSz /z90BX9r9yY6vPsBGhcbO9RawnTz3J8BiTGfOx2/JlEHTUsQ6pjj5TcZ9BKyW/AepeS+EADZr 3cf8jc4+Dkr/bjLOQqSFMXGwB36ZA0Mr1Z5Bz00Mph4b4LihkfgLUxk8nCzq+4LIY1WQsoqCr ukT6DaBJdELpBjXUj7StBTFqQyYnZ9ojLHzW6cx02Z8tlN43CRYgXCR1bV+bNDPr9HRXw0Or8 jKZUPFu6BG1Nfi9CxjZOJu+dTEYmQ1TcGVG0koVQshGpO1TnKw/+4cIscj59BabpBf5QRMPNa LgLMWUEzsuyM0/X0SLVm++t+KRDhbaWW3xP3aLX99hNEKirFd93/b1kJZB97wtoOrGyQyqtcR PwwHFmRCZii6qo4Tg0y1eQzeCED+1Iqdo5RuLPQYcH7XMQBjvXL9WclmC94gwCZukBRDV8cai s4sEBnaJeMmP9mf2mI/cplXmqeXwQxdddlfQNoB1UG47Aiwlgmp+ddLK8VXZIY+Id8HB4B/Zi f6GCFTyv0wIrYk4iKKvwQSReOGANexnYYDz6AL8DJXQ6G6rlMtSE/IXFJFF6O1GWbWPLVJ/8y jVv9JxoG3Kh4bO0czXVgbhE6RGM/gvGI+MdvDmWfj3qQ7v8T2Y1XRP/w8DMwb2zyqbI8X+aLg ewBB4O8mv60+rB9/n8uePD0WsLVITstlSYObrkw0tHEzAaxE3hpjHhpkl0MpbmvdBKe9S+DV3 sE13+eJHILvoDG4PGOpfq2+IzgPswRoDRnRUtob7N+uYK/Wz2iyp7zmXMDqqn2f7s11gQusBq TVGvSerUdUh8N3+h4PVG1V7kJUEfM5a894Nw9d++6AmZbKLCKVaVNKzUwIA6Fdf/6EdhGFqYB KcPECOPdGD6CzMmWG Content-Transfer-Encoding: quoted-printable Subject: Re: [musl] i386 __set_thread_area will crash if the syscall fails On Sun, Aug 30, 2020 at 10:51:38PM -0400, Rich Felker wrote: > The attached should be the equivalent in C, but it's somewhat larger. > Somewhat indifferent on replacing it. > > Rich I support that change. I did send some comments for that file a while ago, but actually moving this stuff to a language that is easier on the eyes than assembler is probably the better move. Plus, this way the compiler gets to optimize the access to the static variable depending on compilation mode (e.g. PIC/non-PIC, i386/i686, etc. etc.). The call/pop was always a little irksome to me. > #define SYSCALL_NO_TLS 1 > #include > #include "syscall.h" > > struct user_desc { > uint32_t entry_number; > uint32_t base_addr; > uint32_t limit; > uint32_t flags; > }; > > static int entry_number =3D -1; > > int __set_thread_area_2(void *p) > { > struct user_desc desc =3D { > entry_number, (uintptr_t)p, 0xfffff, 0x51 > }; > int r =3D __syscall(SYS_set_thread_area, &desc); > if (!r) { > entry_number =3D desc.entry_number; > __asm__ __volatile__ ("mov %0,%%gs" : > : "r"(3+8*desc.entry_number)); I always wonder why people put underscores around the volatile, though. Given that volatile is always a keyword, no matter the compiler settings. Plus, in this case it is unnecessary, since the asm snippet has no outputs, so it is always volatile. > return 0; > } > desc.entry_number =3D 0; > r =3D __syscall(SYS_modify_ldt, 1, &desc, 16); > if (!r) { > __asm__ __volatile__ ("mov %0,%%gs" : > : "r"(7)); > return 1; > } > return r; > } Ciao, Markus