From patchwork Sun Jun 10 03:00:48 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Richard Henderson X-Patchwork-Id: 927228 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=pass (mailfrom) smtp.mailfrom=nongnu.org (client-ip=2001:4830:134:3::11; helo=lists.gnu.org; envelope-from=qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org; receiver=) Authentication-Results: ozlabs.org; dmarc=fail (p=none dis=none) header.from=linaro.org Authentication-Results: ozlabs.org; dkim=fail reason="signature verification failed" (1024-bit key; unprotected) header.d=linaro.org header.i=@linaro.org header.b="hPPNacGv"; dkim-atps=neutral Received: from lists.gnu.org (lists.gnu.org [IPv6:2001:4830:134:3::11]) (using TLSv1 with cipher AES256-SHA (256/256 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 413LwD2QgVz9ry1 for ; Sun, 10 Jun 2018 13:19:08 +1000 (AEST) Received: from localhost ([::1]:42258 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1fRqsj-00073k-2U for incoming@patchwork.ozlabs.org; Sat, 09 Jun 2018 23:19:05 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:40239) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1fRqdB-0001v7-AI for qemu-devel@nongnu.org; Sat, 09 Jun 2018 23:03:02 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1fRqdA-0003HQ-Gv for qemu-devel@nongnu.org; Sat, 09 Jun 2018 23:03:01 -0400 Received: from mail-pl0-x241.google.com ([2607:f8b0:400e:c01::241]:43596) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1fRqdA-0003HB-Ax for qemu-devel@nongnu.org; Sat, 09 Jun 2018 23:03:00 -0400 Received: by mail-pl0-x241.google.com with SMTP id c41-v6so10384334plj.10 for ; Sat, 09 Jun 2018 20:03:00 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=nUcgwKjKRtuUIl+X0SKW42bj2GseoHEMo16pVq3WZHs=; b=hPPNacGv8/qPETwucWmNA6Z80FGeHSlc+Pkz86WvYJSihXl06HWCwEsqR/FqQDvx2j r2r6jnRNtRm96m+Df1b8zR/VSxP0gkdoLGJHZSh9a2npwDNKMaFIdw4L+uUiObtOelQD +DYVG+3OfjCBDu9eyxGD993ihb6pnQyuGHYw0= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references; bh=nUcgwKjKRtuUIl+X0SKW42bj2GseoHEMo16pVq3WZHs=; b=YvMNvJ62+hTtrrWF2N/sK96DtRyprexixGA2WMRe8eILqOzYh+yx5YZEYnHLLXcc24 1P6DSftajZwF5gv2Sox0RHth/AeeS+sWjzLErcg7un6L9iQILatLl2XNRheVw2my/5+4 eIJsobb1SNX45JV/lHUr0UYnfPi6QOIn02Z5SYXeHYEueMc2GVGPD3zZ3a8CLBN2tZm+ bwixDsRUP7RRQoafUPZY8o7FUOkTrnTZ6D97DEVZGQnanR9OWuOCnOrlSMVJoV5guyJb nVTwWT/R7mh6sFlYF8swGw3G6grTrBCdyECiUFdAeG0ox6Fex7jOV/UCb1VpyP1kIWiX hkGw== X-Gm-Message-State: APt69E1i5QdINomYEZNZp3YkH38A5EYf3fqeodJKhkh6sCUP3cOvM+JF FvfdkW+Rcsp2INLreKrAdXSlG2onLqc= X-Google-Smtp-Source: ADUXVKL23Q2ljkPTvvQ+zJ8IHOn3l6KYQ1JdJoCPfcmZGlcCHZq1ZfH5Qq715J74OuhZDAQP65JuFQ== X-Received: by 2002:a17:902:9a4b:: with SMTP id x11-v6mr12960917plv.176.1528599779153; Sat, 09 Jun 2018 20:02:59 -0700 (PDT) Received: from cloudburst.twiddle.net (rrcs-173-198-77-219.west.biz.rr.com. [173.198.77.219]) by smtp.gmail.com with ESMTPSA id y17-v6sm31712718pfe.33.2018.06.09.20.02.57 (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Sat, 09 Jun 2018 20:02:58 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Date: Sat, 9 Jun 2018 17:00:48 -1000 Message-Id: <20180610030220.3777-17-richard.henderson@linaro.org> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20180610030220.3777-1-richard.henderson@linaro.org> References: <20180610030220.3777-1-richard.henderson@linaro.org> X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2607:f8b0:400e:c01::241 Subject: [Qemu-devel] [PATCH v2 016/108] linux-user: Split out link, linkat X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: laurent@vivier.eu Errors-To: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org Sender: "Qemu-devel" All targets define linkat; remove the ifdef. Signed-off-by: Richard Henderson --- linux-user/syscall.c | 66 +++++++++++++++++++++++--------------------- 1 file changed, 34 insertions(+), 32 deletions(-) diff --git a/linux-user/syscall.c b/linux-user/syscall.c index a146b696fd..936c7a7484 100644 --- a/linux-user/syscall.c +++ b/linux-user/syscall.c @@ -8052,6 +8052,36 @@ IMPL(fork) } #endif +#ifdef TARGET_NR_link +IMPL(link) +{ + char *p1 = lock_user_string(arg1); + char *p2 = lock_user_string(arg2); + abi_long ret = -TARGET_EFAULT; + + if (p1 && p2) { + ret = get_errno(link(p1, p2)); + } + unlock_user(p1, arg1, 0); + unlock_user(p2, arg2, 0); + return ret; +} +#endif + +IMPL(linkat) +{ + char *p1 = lock_user_string(arg2); + char *p2 = lock_user_string(arg4); + abi_long ret = -TARGET_EFAULT; + + if (p1 && p2) { + ret = get_errno(linkat(arg1, p1, arg3, p2, arg5)); + } + unlock_user(p1, arg2, 0); + unlock_user(p2, arg4, 0); + return ret; +} + #ifdef CONFIG_OPEN_BY_HANDLE IMPL(name_to_handle_at) { @@ -8270,38 +8300,6 @@ static abi_long do_syscall1(void *cpu_env, unsigned num, abi_long arg1, void *p; switch(num) { -#ifdef TARGET_NR_link - case TARGET_NR_link: - { - void * p2; - p = lock_user_string(arg1); - p2 = lock_user_string(arg2); - if (!p || !p2) - ret = -TARGET_EFAULT; - else - ret = get_errno(link(p, p2)); - unlock_user(p2, arg2, 0); - unlock_user(p, arg1, 0); - } - return ret; -#endif -#if defined(TARGET_NR_linkat) - case TARGET_NR_linkat: - { - void * p2 = NULL; - if (!arg2 || !arg4) - return -TARGET_EFAULT; - p = lock_user_string(arg2); - p2 = lock_user_string(arg4); - if (!p || !p2) - ret = -TARGET_EFAULT; - else - ret = get_errno(linkat(arg1, p, arg3, p2, arg5)); - unlock_user(p, arg2, 0); - unlock_user(p2, arg4, 0); - } - return ret; -#endif #ifdef TARGET_NR_unlink case TARGET_NR_unlink: if (!(p = lock_user_string(arg1))) @@ -12506,6 +12504,10 @@ static impl_fn *syscall_table(unsigned num) #ifdef TARGET_NR_fork SYSCALL(fork); #endif +#ifdef TARGET_NR_link + SYSCALL(link); +#endif + SYSCALL(linkat); #ifdef CONFIG_OPEN_BY_HANDLE SYSCALL(name_to_handle_at); #endif