From owner-svn-src-all@FreeBSD.ORG Thu Jan 2 10:29:00 2014 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 3C70B7B6; Thu, 2 Jan 2014 10:29:00 +0000 (UTC) Received: from elvis.mu.org (elvis.mu.org [192.203.228.196]) by mx1.freebsd.org (Postfix) with ESMTP id 210CF1926; Thu, 2 Jan 2014 10:28:59 +0000 (UTC) Received: from Alfreds-MacBook-Pro-9.local (c-76-21-10-192.hsd1.ca.comcast.net [76.21.10.192]) by elvis.mu.org (Postfix) with ESMTPSA id 7DC061A3C19; Thu, 2 Jan 2014 02:28:58 -0800 (PST) Message-ID: <52C53F69.3040507@mu.org> Date: Thu, 02 Jan 2014 02:28:57 -0800 From: Alfred Perlstein User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.7; rv:24.0) Gecko/20100101 Thunderbird/24.2.0 MIME-Version: 1.0 To: Pawel Jakub Dawidek , Stanislav Sedov Subject: Re: svn commit: r255219 - in head: contrib/tcpdump lib/libc lib/libc/capability lib/libc/include lib/libc/sys lib/libprocstat sbin/dhclient sbin/hastd sys/amd64/linux32 sys/bsm sys/cddl/compat/opensola... References: <201309050009.r8509vsE061271@svn.freebsd.org> <67DFFD7B-01DE-4862-BED3-DD42EB92A8F4@freebsd.org> <20140102093322.GA1655@garage.freebsd.pl> In-Reply-To: <20140102093322.GA1655@garage.freebsd.pl> Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 8bit Cc: svn-src-head@freebsd.org, svn-src-all@freebsd.org, src-committers@freebsd.org X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 02 Jan 2014 10:29:00 -0000 On 1/2/14 1:33 AM, Pawel Jakub Dawidek wrote: > On Wed, Jan 01, 2014 at 11:16:22PM -0800, Stanislav Sedov wrote: >> On Sep 4, 2013, at 5:09 PM, Pawel Jakub Dawidek wrote: >> >>> This commit also breaks compatibility with some existing Capsicum system calls, >>> but I see no other way to do that. This should be fine as Capsicum is still >>> experimental and this change is not going to 9.x. >> Hi! >> >> This change also increases the size of kinfo_file structure, which won’t allow >> programs not compiled against HEAD and working with kern.info.filedesc sysctl >> to run properly on HEAD (e.g. 8.x, 9.x and 10.x jails won’t run properly on HEAD, >> and it also broke valgrind). Is there absolutely no way to avoid extending the size >> of this struct? > Well, I made this change to have space for future cap_rights_t > expension. I did that change for a major branch, so we don't have to do > it in the middle of 10.x or to not block the work until 11.0. > > Note that the structure changed size not only because of _kf_cap_spare[3] > field, but also because cap_rights_t is not uint64_t anymore, it is now > struct that contains two uint64_t (1424 - 1392 = 4 * 8). > > I'm afraid it is too late to change it for 10.0 at this point anyway. > Not sure if you are aware this was merged to 10, because you write about > 10.x jails not working properly on HEAD. 10.x jails will work properly > on HEAD. > > BTW. I'd love if we stop using such structures for a running kernel. > We should really move to using libnv to export data like that. Aren't there enough bits in int _kf_ispare[4]; /* Space for more stuff. */ to make this work for the time being until you can provide an alternate way to fetch the cap stuff from the kernel. Afaik you could just remove the "spare" and steal 2 or 4 entries from _kf_ispare until it is sorted. Can you please make use of that and discuss merge to 10 with re@? It really sounds like breaking top/etc under jails is something that should and can be avoided. Thank you, -Alfred > >>> #if defined(__amd64__) || defined(__i386__) >>> -#define KINFO_FILE_SIZE 1392 >>> +#define KINFO_FILE_SIZE 1424 >>> #endif >>> >>> struct kinfo_file { >>> @@ -389,6 +390,7 @@ >>> uint16_t kf_pad1; /* Round to 32 bit alignment. */ >>> int _kf_ispare0; /* Space for more stuff. */ >>> cap_rights_t kf_cap_rights; /* Capability rights. */ >>> + uint64_t _kf_cap_spare[3]; /* Space for future cap_rights_t. */ >>> int _kf_ispare[4]; /* Space for more stuff. */ >>> /* Truncated before copyout in sysctl */ >>> char kf_path[PATH_MAX]; /* Path to file, if any. */ -- Alfred Perlstein