From owner-freebsd-emulation@freebsd.org Sat Oct 14 17:05:00 2017 Return-Path: Delivered-To: freebsd-emulation@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id 07D80E279BE for ; Sat, 14 Oct 2017 17:05:00 +0000 (UTC) (envelope-from tijl@freebsd.org) Received: from mailman.ysv.freebsd.org (mailman.ysv.freebsd.org [IPv6:2001:1900:2254:206a::50:5]) by mx1.freebsd.org (Postfix) with ESMTP id D43BA75C37 for ; Sat, 14 Oct 2017 17:04:59 +0000 (UTC) (envelope-from tijl@freebsd.org) Received: by mailman.ysv.freebsd.org (Postfix) id D396AE279BB; Sat, 14 Oct 2017 17:04:59 +0000 (UTC) Delivered-To: emulation@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id D32FFE279B9 for ; Sat, 14 Oct 2017 17:04:59 +0000 (UTC) (envelope-from tijl@freebsd.org) Received: from mailrelay108.isp.belgacom.be (mailrelay108.isp.belgacom.be [195.238.20.135]) (using TLSv1.2 with cipher RC4-SHA (128/128 bits)) (Client CN "relay.skynet.be", Issuer "GlobalSign Organization Validation CA - SHA256 - G2" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 15C5C75C36; Sat, 14 Oct 2017 17:04:58 +0000 (UTC) (envelope-from tijl@freebsd.org) X-Belgacom-Dynamic: yes IronPort-PHdr: =?us-ascii?q?9a23=3APg1KgRydzhtwb07XCy+O+j09IxM/srCxBDY+r6Qd?= =?us-ascii?q?2+kRIJqq85mqBkHD//Il1AaPBtSLraocw8Pt8InYEVQa5piAtH1QOLdtbDQizf?= =?us-ascii?q?ssogo7HcSeAlf6JvO5JwYzHcBFSUM3tyrjaRsdF8nxfUDdrWOv5jAOBBr/KRB1?= =?us-ascii?q?JuPoEYLOksi7ze6/9pnQbglSmDaxfa55IQmrownWqsQYm5ZpJLwryhvOrHtIeu?= =?us-ascii?q?BWyn1tKFmOgRvy5dq+8YB6/ShItP0v68BPUaPhf6QlVrNYFygpM3o05MLwqxbO?= =?us-ascii?q?SxaE62YGXWUXlhpIBBXF7A3/U5zsvCb2qvZx1S+HNsDtU7s6RSqt4LtqSB/wiS?= =?us-ascii?q?cIKTg58H3MisdtiK5XuQ+tqwBjz4LRZoyeKfhwcb7Hfd4CS2RPXthfWTFCDIyz?= =?us-ascii?q?c4QCFO8BMfpEo4Tnu1cCsQWyCA+xD+3v0D9IgXr20LUk3eQgEwHG2BErEswJsH?= =?us-ascii?q?TTt9X6KqISXvqzzKnT0D7OaO9W2Tb/6IjMaR0voeuMUqxufsfM1EchGRnJjlKK?= =?us-ascii?q?qYzqJj6Y0PkGvWuD7+d4Vu+jl3Qrpx9trjSy3MshhYfEipgWx13F8yhy3Zw7Ks?= =?us-ascii?q?eiSEFhZN6pCJ5QtyaHOIRoWs4iWGRouDoiyr0BpJ67YDAGyJQ5yB7bbPyKa4uI?= =?us-ascii?q?7QjnVOaQJDd3mmhleLWlixau8EigyOn8WtOo31ZNqSpFicfDtnUX2BzV8ciLUP?= =?us-ascii?q?x9/l2u2TqX1gDT7P9LIVwsmKfYN5It2KA8moYOvUjZESL7ll/6gayXe0k8/+in?= =?us-ascii?q?8eXnYrHopp+GMI90jxnzMrgvmsy9BeQ1KQYOX3KF9uuiz7Lj5lD2TK9Njv0sna?= =?us-ascii?q?nVqIraKtgDpq6lHw9V1Z4u5Ai6Dze71NQXh2UHLFNCeBKBlIXpNUvOL+7mAvik?= =?us-ascii?q?mFSjjS1nx/fcPr3uGp/NNGTMkK/9fbZh7E5R0Bc8wsxf551OBbEBIfTzV1T/tN?= =?us-ascii?q?zCEBA2LRe7w/36B9ln0YMeQ22PUeelN/b5sVaH5+RnD+yNeJUE8GLxIPgs6P/o?= =?us-ascii?q?pXEjlFIXZqXv2oEYPjTwE/F7J0yFYH3qqvkbHGoghSZ4S/bl23OYVjsGW3ewW+?= =?us-ascii?q?oX4TYgBYevC5yLEpysgrip8j22E7dtSiZBEF/aQiSgTJmNR/pZMHHaGcRmiDFR?= =?us-ascii?q?EOH5E4I=3D?= X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: =?us-ascii?q?A2CiDQCxQuJZ/1YryVBcHgYMGQYMgzRUf?= =?us-ascii?q?hSPII49AQGCJAGCRZM6ghSKHEEXAQEBAQEBAQEBAQFqKII4JAGDHUwTNCokAYo?= =?us-ascii?q?zrTeLLgwXD4Mtk2UFoUiEPZAhf5IklyghATVCgRdVMgiDLoRgPosvAQEB?= X-IPAS-Result: =?us-ascii?q?A2CiDQCxQuJZ/1YryVBcHgYMGQYMgzRUfhSPII49AQGCJAG?= =?us-ascii?q?CRZM6ghSKHEEXAQEBAQEBAQEBAQFqKII4JAGDHUwTNCokAYozrTeLLgwXD4Mtk?= =?us-ascii?q?2UFoUiEPZAhf5IklyghATVCgRdVMgiDLoRgPosvAQEB?= Received: from 86.43-201-80.adsl-dyn.isp.belgacom.be (HELO kalimero.tijl.coosemans.org) ([80.201.43.86]) by relay.skynet.be with ESMTP; 14 Oct 2017 19:03:47 +0200 Received: from kalimero.tijl.coosemans.org (kalimero.tijl.coosemans.org [127.0.0.1]) by kalimero.tijl.coosemans.org (8.15.2/8.15.2) with ESMTP id v9EH3j3d010469; Sat, 14 Oct 2017 19:03:46 +0200 (CEST) (envelope-from tijl@FreeBSD.org) Date: Sat, 14 Oct 2017 19:03:45 +0200 From: Tijl Coosemans To: Chagin Dmitry , emulation@FreeBSD.org Subject: [patch] Fix linux readlink of dead link Message-ID: <20171014190345.2d6bcf68@kalimero.tijl.coosemans.org> MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="MP_/YPibB3Hkby4cOEmvRakG=rM" X-BeenThere: freebsd-emulation@freebsd.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: Development of Emulators of other operating systems List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 14 Oct 2017 17:05:00 -0000 --MP_/YPibB3Hkby4cOEmvRakG=rM Content-Type: text/plain; charset=US-ASCII Content-Transfer-Encoding: 7bit Content-Disposition: inline Hi, Can you review the attached patch? Currently kern_alternate_path follows symbolic links which means it fails to return the alternate path if it's a dead link. This means syscalls like readlink and lstat fail on a dead link that exists under /compat/linux but not under /. I also think it's better to report an error to applications that try to open such a path instead of ignoring the link and trying the path under /. --MP_/YPibB3Hkby4cOEmvRakG=rM Content-Type: text/x-patch Content-Transfer-Encoding: 7bit Content-Disposition: attachment; filename=linux.nofollow.patch Index: sys/kern/vfs_lookup.c =================================================================== --- sys/kern/vfs_lookup.c (revision 324614) +++ sys/kern/vfs_lookup.c (working copy) @@ -1390,13 +1390,13 @@ kern_alternate_path(struct thread *td, const char *pre for (cp = &ptr[len] - 1; *cp != '/'; cp--); *cp = '\0'; - NDINIT(&nd, LOOKUP, FOLLOW, UIO_SYSSPACE, buf, td); + NDINIT(&nd, LOOKUP, NOFOLLOW, UIO_SYSSPACE, buf, td); error = namei(&nd); *cp = '/'; if (error != 0) goto keeporig; } else { - NDINIT(&nd, LOOKUP, FOLLOW, UIO_SYSSPACE, buf, td); + NDINIT(&nd, LOOKUP, NOFOLLOW, UIO_SYSSPACE, buf, td); error = namei(&nd); if (error != 0) --MP_/YPibB3Hkby4cOEmvRakG=rM--