lists.openwall.net | lists / announce owl-users owl-dev john-users john-dev passwdqc-users yescrypt popa3d-users / oss-security kernel-hardening musl sabotage tlsify passwords / crypt-dev xvendor / Bugtraq Full-Disclosure linux-kernel linux-netdev linux-ext4 linux-hardening linux-cve-announce PHC | |
Open Source and information security mailing list archives
| ||
|
Date: Mon, 13 May 2019 15:03:40 +0200 From: Roberto Sassu <roberto.sassu@...wei.com> To: Jann Horn <jannh@...gle.com> CC: <viro@...iv.linux.org.uk>, <linux-security-module@...r.kernel.org>, <linux-integrity@...r.kernel.org>, <initramfs@...r.kernel.org>, <linux-api@...r.kernel.org>, <linux-fsdevel@...r.kernel.org>, <linux-kernel@...r.kernel.org>, <zohar@...ux.vnet.ibm.com>, <silviu.vlasceanu@...wei.com>, <dmitry.kasatkin@...wei.com>, <takondra@...co.com>, <kamensky@...co.com>, <hpa@...or.com>, <arnd@...db.de>, <rob@...dley.net>, <james.w.mcmechan@...il.com> Subject: Re: [PATCH v2 3/3] initramfs: introduce do_readxattrs() On 5/10/2019 11:33 PM, Jann Horn wrote: > On Thu, May 09, 2019 at 01:24:20PM +0200, Roberto Sassu wrote: >> This patch adds support for an alternative method to add xattrs to files in >> the rootfs filesystem. Instead of extracting them directly from the ram >> disk image, they are extracted from a regular file called .xattr-list, that >> can be added by any ram disk generator available today. > [...] >> +struct path_hdr { >> + char p_size[10]; /* total size including p_size field */ >> + char p_data[]; /* <path>\0<xattrs> */ >> +}; >> + >> +static int __init do_readxattrs(void) >> +{ >> + struct path_hdr hdr; >> + char str[sizeof(hdr.p_size) + 1]; >> + unsigned long file_entry_size; >> + size_t size, name_buf_size, total_size; >> + struct kstat st; >> + int ret, fd; >> + >> + ret = vfs_lstat(XATTR_LIST_FILENAME, &st); >> + if (ret < 0) >> + return ret; >> + >> + total_size = st.size; >> + >> + fd = ksys_open(XATTR_LIST_FILENAME, O_RDONLY, 0); >> + if (fd < 0) >> + return fd; >> + >> + while (total_size) { >> + size = ksys_read(fd, (char *)&hdr, sizeof(hdr)); > [...] >> + ksys_close(fd); >> + >> + if (ret < 0) >> + error("Unable to parse xattrs"); >> + >> + return ret; >> +} > > Please use something like filp_open()+kernel_read()+fput() instead of > ksys_open()+ksys_read()+ksys_close(). I understand that some of the init > code needs to use the syscall wrappers because no equivalent VFS > functions are available, but please use the VFS functions when that's > easy to do. Ok. Thanks for the suggestion. Roberto -- HUAWEI TECHNOLOGIES Duesseldorf GmbH, HRB 56063 Managing Director: Bo PENG, Jian LI, Yanli SHI
Powered by blists - more mailing lists