From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751205AbeAVT6d (ORCPT ); Mon, 22 Jan 2018 14:58:33 -0500 Received: from mail-io0-f194.google.com ([209.85.223.194]:39048 "EHLO mail-io0-f194.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1750891AbeAVT6L (ORCPT ); Mon, 22 Jan 2018 14:58:11 -0500 X-Google-Smtp-Source: AH8x224xBE+xA/HvfXmIjIKKIpoocdy9hIsg/VArQHOyEtVgit6QsM33aPjSvRcuV7w7KNB6Q7DW6J2mFrA2dqjS+A0= MIME-Version: 1.0 In-Reply-To: <6f0abb8d-84b3-070e-fca7-c71524311702@prevas.dk> References: <201801170233.JDG21842.OFOJMQSHtOFFLV@I-love.SAKURA.ne.jp> <201801172008.CHH39543.FFtMHOOVSQJLFO@I-love.SAKURA.ne.jp> <201801181712.BFD13039.LtHOSVMFJQFOFO@I-love.SAKURA.ne.jp> <20180118122550.2lhsjx7hg5drcjo4@node.shutemov.name> <20180118145830.GA6406@redhat.com> <20180118165629.kpdkezarsf4qymnw@node.shutemov.name> <20180118234955.nlo55rw2qsfnavfm@node.shutemov.name> <20180119125503.GA2897@bombadil.infradead.org> <6f0abb8d-84b3-070e-fca7-c71524311702@prevas.dk> From: Linus Torvalds Date: Mon, 22 Jan 2018 11:58:09 -0800 X-Google-Sender-Auth: kyS4RDvKtJXD1yXBPN8v5_zb1Xg Message-ID: Subject: Re: [mm 4.15-rc8] Random oopses under memory pressure. To: Rasmus Villemoes Cc: "Kirill A. Shutemov" , Matthew Wilcox , Al Viro , Linux Kernel Mailing List Content-Type: text/plain; charset="UTF-8" Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Mon, Jan 22, 2018 at 5:26 AM, Rasmus Villemoes wrote: > On 2018-01-19 19:42, Linus Torvalds wrote: >> >> I actually asked (long long ago) for an optinal compiler warning for >> "pointer subtraction with non-power-of-2 sizes". Not because of it >> being undefined, but simply because it's expensive. The >> divide->multiply thing doesn't always work, > > Huh? If (compile-time constant, positive) d=m*2^k with m odd, and x is > known to be a multiple of d, x/d can always be computed as (x>>k)*m' == > (x*m')>>k, with m' being the mod 2^N multiplicative inverse of m, right? Hmm. I have definitely seen gcc generate the difference with a divide. But it may be less of a "can't do it with a multiply" and more of a "not all versions of gcc have the multiplication optimization". Linus