Thread (20 messages) 20 messages, 8 authors, 2012-03-25

Re: [PATCH] ext2: Don't export ext2_mask_flags() to user space

From: Mike Frysinger <hidden>
Date: 2012-03-24 06:51:03
Also in: lkml, stable

On Thu, Mar 22, 2012 at 13:31, Al Viro wrote:
On Thu, Mar 22, 2012 at 12:28:25PM -0400, Ted Ts'o wrote:
quoted
On Thu, Mar 22, 2012 at 08:00:41AM +0200, Artem Bityutskiy wrote:
quoted
On Thu, 2012-03-22 at 06:53 +0100, Thierry Reding wrote:
quoted
What's the recommended fix for packages that cannot or will not use
libext2fs, like busybox? Copy the required parts into a private header
and use that instead?
The normal way is to just keep a private copy of the whole header file.
Because the on-disk format stays compatible, those programs do not have
to update the header very often - only rarely if they want to support
some new feature.
Even if they're not iwlling to use libext2fs (for space reasons, I
would assume?  It can't be because of license compatibility issues
since they are both GPLv2), they could just simply grab the ext2_fs.h
from e2fsprogs.  That has all of the file system definitions for ext2,
ext3, and ext4.
Ho-hum...  Then we could kill a lot of lines in include/linux/ext2_fs.h.
I wonder how much of what remains has any business being outside of
fs/ext2, actually - AFAICS, there are very few places that might possibly
care:

arch/blackfin/kernel/setup.c:595:       if (*((unsigned short *)(mtd_phys + 0x438)) == EXT2_SUPER_MAGIC)
fs/nfsd/nfs3proc.c:599:         case EXT2_SUPER_MAGIC:
fs/nfsd/nfs3proc.c:600:                 resp->p_link_max = EXT2_LINK_MAX;
fs/nfsd/nfs3proc.c:601:                 resp->p_name_max = EXT2_NAME_LEN;
init/do_mounts_rd.c:57: struct ext2_super_block *ext2sb;
init/do_mounts_rd.c:70: ext2sb = (struct ext2_super_block *) buf;
init/do_mounts_rd.c:153:        if (ext2sb->s_magic == cpu_to_le16(EXT2_SUPER_MAGIC)) {
init/do_mounts_rd.c:155:                       "RAMDISK: ext2 filesystem found at block %d\n",
init/do_mounts_rd.c:157:                nblocks = le32_to_cpu(ext2sb->s_blocks_count) <<
init/do_mounts_rd.c:158:                        le32_to_cpu(ext2sb->s_log_block_size);
security/selinux/hooks.c:2974:  case EXT2_IOC_GETFLAGS:
security/selinux/hooks.c:2976:  case EXT2_IOC_GETVERSION:
security/selinux/hooks.c:2980:  case EXT2_IOC_SETFLAGS:
security/selinux/hooks.c:2982:  case EXT2_IOC_SETVERSION:

and that's it.  blackfin and do_mounts_rd are doing the same thing (blackfin -
buggy, AFAICS).
buggy how ?  they're not exactly the same as the Blackfin code is
setting things up for the uClinux MTD map.  it isn't parsing the
filesystem itself (ignoring the size extraction from the superblock).
Looks like both are  asking for something along the lines of
sector_t detect_ext2(void *image), returning 0 if it's not one and size in
kilobytes if it is...
yes, that would be fine
-mike
--
To unsubscribe from this list: send the line "unsubscribe linux-ext4" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help