From mboxrd@z Thu Jan 1 00:00:00 1970 From: David Howells Subject: Re: [PATCH v3] asm-generic: {get,put}_user ptr argument evaluate only 1 time Date: Tue, 21 Jul 2015 15:06:13 +0100 Message-ID: <21799.1437487573@warthog.procyon.org.uk> References: <1437459289-26553-1-git-send-email-ysato@users.sourceforge.jp> <1437023722-7432-1-git-send-email-ysato@users.sourceforge.jp> Mime-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Return-path: In-Reply-To: <1437459289-26553-1-git-send-email-ysato@users.sourceforge.jp> Content-ID: <21798.1437487573.1@warthog.procyon.org.uk> Sender: linux-kernel-owner@vger.kernel.org To: Yoshinori Sato Cc: dhowells@redhat.com, Arnd Bergmann , linux-arch@vger.kernel.org, linux-kernel@vger.kernel.org List-Id: linux-arch.vger.kernel.org Yoshinori Sato wrote: > #define get_user(x, ptr) \ > ({ \ > + uintptr_t __uip = (uintptr_t)(ptr); \ const? > might_fault(); \ > - access_ok(VERIFY_READ, ptr, sizeof(*ptr)) ? \ > - __get_user(x, ptr) : \ > + access_ok(VERIFY_READ, __uip, sizeof(*ptr)) ? \ > + __get_user((x), (__typeof__(*ptr) *)__uip) : \ > -EFAULT; \ > }) Would it be better to use void* instead of uintptr_t? David From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mx1.redhat.com ([209.132.183.28]:39475 "EHLO mx1.redhat.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1754152AbbGUOGS (ORCPT ); Tue, 21 Jul 2015 10:06:18 -0400 From: David Howells In-Reply-To: <1437459289-26553-1-git-send-email-ysato@users.sourceforge.jp> References: <1437459289-26553-1-git-send-email-ysato@users.sourceforge.jp> <1437023722-7432-1-git-send-email-ysato@users.sourceforge.jp> Subject: Re: [PATCH v3] asm-generic: {get,put}_user ptr argument evaluate only 1 time MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-ID: <21798.1437487573.1@warthog.procyon.org.uk> Date: Tue, 21 Jul 2015 15:06:13 +0100 Message-ID: <21799.1437487573@warthog.procyon.org.uk> Sender: linux-arch-owner@vger.kernel.org List-ID: To: Yoshinori Sato Cc: dhowells@redhat.com, Arnd Bergmann , linux-arch@vger.kernel.org, linux-kernel@vger.kernel.org Message-ID: <20150721140613.WQ7VQcNXho9Cb7FzZkB7aTwHb8lNzkcs1wdQCbAT0rY@z> Yoshinori Sato wrote: > #define get_user(x, ptr) \ > ({ \ > + uintptr_t __uip = (uintptr_t)(ptr); \ const? > might_fault(); \ > - access_ok(VERIFY_READ, ptr, sizeof(*ptr)) ? \ > - __get_user(x, ptr) : \ > + access_ok(VERIFY_READ, __uip, sizeof(*ptr)) ? \ > + __get_user((x), (__typeof__(*ptr) *)__uip) : \ > -EFAULT; \ > }) Would it be better to use void* instead of uintptr_t? David