Message ID | 1463518767.13655.2.camel@HansenPartnership.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Hey James, yeah that's a lot better. I do still get some syslog messages, but i was trivially able to bind a shiftfs into a container and use it the way I'd want. [ 209.452274] ------------[ cut here ]------------ [ 209.452296] WARNING: CPU: 0 PID: 3072 at fs/ext4/inode.c:3977 ext4_truncate+0x3f5/0x5b0 [ 209.452299] Modules linked in: binfmt_misc veth ip6t_MASQUERADE nf_nat_masquerade_ipv6 ip6table_nat nf_conntrack_ipv6 nf_defrag_ipv6 nf_nat_ipv6 ip6_tables xt_CHECKSUM iptable_mangle ipt_MASQUERADE nf_nat_masquerade_ipv4 iptable_nat nf_conntrack_ipv4 nf_defrag_ipv4 nf_nat_ipv4 nf_nat nf_conntrack xt_tcpudp bridge stp llc iptable_filter ip_tables x_tables ppdev kvm_intel kvm irqbypass nls_utf8 isofs joydev input_leds serio_raw i2c_piix4 pvpanic parport_pc 8250_fintek mac_hid parport ib_iser rdma_cm iw_cm ib_cm ib_sa ib_mad ib_core ib_addr configfs iscsi_tcp libiscsi_tcp libiscsi scsi_transport_iscsi autofs4 btrfs raid10 raid456 async_raid6_recov async_memcpy async_pq async_xor async_tx xor raid6_pq libcrc32c raid1 raid0 multipath linear cirrus ttm drm_kms_helper syscopyarea sysfillrect sysimgblt fb_sys_fops [ 209.452388] psmouse drm pata_acpi floppy [ 209.452401] CPU: 0 PID: 3072 Comm: bash Not tainted 4.6.0-rc5+ #11 [ 209.452404] Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS Bochs 01/01/2011 [ 209.452407] 0000000000000286 00000000ccc8425d ffff88007a1cfa98 ffffffff8145dae3 [ 209.452412] 0000000000000000 0000000000000000 ffff88007a1cfad8 ffffffff8108c25b [ 209.452416] 00000f897a1cfaf8 ffff880052efe340 ffff88007a1cfbb8 ffff880052efe560 [ 209.452421] Call Trace: [ 209.452431] [<ffffffff8145dae3>] dump_stack+0x85/0xc2 [ 209.452437] [<ffffffff8108c25b>] __warn+0xcb/0xf0 [ 209.452440] [<ffffffff8108c38d>] warn_slowpath_null+0x1d/0x20 [ 209.452444] [<ffffffff81306d45>] ext4_truncate+0x3f5/0x5b0 [ 209.452447] [<ffffffff81309447>] ext4_setattr+0x627/0xa40 [ 209.452457] [<ffffffff813b6483>] ? security_prepare_creds+0x43/0x60 [ 209.452468] [<ffffffff810b63d2>] ? creds_are_invalid.part.1+0x12/0x40 [ 209.452478] [<ffffffff81396491>] shiftfs_setattr+0x181/0x202 [ 209.452492] [<ffffffff812831f5>] notify_change+0x235/0x360 [ 209.452500] [<ffffffff8125f057>] do_truncate+0x77/0xc0 [ 209.452505] [<ffffffff81271959>] path_openat+0x269/0x1350 [ 209.452509] [<ffffffff81273f01>] do_filp_open+0x91/0x100 [ 209.452517] [<ffffffff819036d7>] ? _raw_spin_unlock+0x27/0x40 [ 209.452522] [<ffffffff81284799>] ? __alloc_fd+0xf9/0x210 [ 209.452526] [<ffffffff81260654>] do_sys_open+0x124/0x210 [ 209.452529] [<ffffffff8126075e>] SyS_open+0x1e/0x20 [ 209.452534] [<ffffffff81003f89>] do_syscall_64+0x69/0x160 [ 209.452537] [<ffffffff81904103>] entry_SYSCALL64_slow_path+0x25/0x25 [ 209.452541] ---[ end trace b995e24e590f8b85 ]--- [ 209.452790] ------------[ cut here ]------------ [ 209.452800] WARNING: CPU: 0 PID: 3072 at fs/ext4/namei.c:2778 ext4_orphan_add+0x11a/0x290 [ 209.452803] Modules linked in: binfmt_misc veth ip6t_MASQUERADE nf_nat_masquerade_ipv6 ip6table_nat nf_conntrack_ipv6 nf_defrag_ipv6 nf_nat_ipv6 ip6_tables xt_CHECKSUM iptable_mangle ipt_MASQUERADE nf_nat_masquerade_ipv4 iptable_nat nf_conntrack_ipv4 nf_defrag_ipv4 nf_nat_ipv4 nf_nat nf_conntrack xt_tcpudp bridge stp llc iptable_filter ip_tables x_tables ppdev kvm_intel kvm irqbypass nls_utf8 isofs joydev input_leds serio_raw i2c_piix4 pvpanic parport_pc 8250_fintek mac_hid parport ib_iser rdma_cm iw_cm ib_cm ib_sa ib_mad ib_core ib_addr configfs iscsi_tcp libiscsi_tcp libiscsi scsi_transport_iscsi autofs4 btrfs raid10 raid456 async_raid6_recov async_memcpy async_pq async_xor async_tx xor raid6_pq libcrc32c raid1 raid0 multipath linear cirrus ttm drm_kms_helper syscopyarea sysfillrect sysimgblt fb_sys_fops [ 209.452896] psmouse drm pata_acpi floppy [ 209.452903] CPU: 0 PID: 3072 Comm: bash Tainted: G W 4.6.0-rc5+ #11 [ 209.452905] Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS Bochs 01/01/2011 [ 209.452907] 0000000000000286 00000000ccc8425d ffff88007a1cfa30 ffffffff8145dae3 [ 209.452912] 0000000000000000 0000000000000000 ffff88007a1cfa70 ffffffff8108c25b [ 209.452917] 00000ada00000008 ffff880052efe340 ffff88007c3ba0c0 ffff880036806000 [ 209.452921] Call Trace: [ 209.452925] [<ffffffff8145dae3>] dump_stack+0x85/0xc2 [ 209.452929] [<ffffffff8108c25b>] __warn+0xcb/0xf0 [ 209.452933] [<ffffffff8108c38d>] warn_slowpath_null+0x1d/0x20 [ 209.452936] [<ffffffff813126ca>] ext4_orphan_add+0x11a/0x290 [ 209.452940] [<ffffffff81306a9e>] ? ext4_truncate+0x14e/0x5b0 [ 209.452948] [<ffffffff81338b98>] ? __ext4_journal_start_sb+0x88/0x1f0 [ 209.452953] [<ffffffff81306ad1>] ext4_truncate+0x181/0x5b0 [ 209.452956] [<ffffffff81309447>] ext4_setattr+0x627/0xa40 [ 209.452960] [<ffffffff813b6483>] ? security_prepare_creds+0x43/0x60 [ 209.452964] [<ffffffff810b63d2>] ? creds_are_invalid.part.1+0x12/0x40 [ 209.452967] [<ffffffff81396491>] shiftfs_setattr+0x181/0x202 [ 209.452971] [<ffffffff812831f5>] notify_change+0x235/0x360 [ 209.452975] [<ffffffff8125f057>] do_truncate+0x77/0xc0 [ 209.452978] [<ffffffff81271959>] path_openat+0x269/0x1350 [ 209.452982] [<ffffffff81273f01>] do_filp_open+0x91/0x100 [ 209.452986] [<ffffffff819036d7>] ? _raw_spin_unlock+0x27/0x40 [ 209.452989] [<ffffffff81284799>] ? __alloc_fd+0xf9/0x210 [ 209.452993] [<ffffffff81260654>] do_sys_open+0x124/0x210 [ 209.452997] [<ffffffff8126075e>] SyS_open+0x1e/0x20 [ 209.453001] [<ffffffff81003f89>] do_syscall_64+0x69/0x160 [ 209.453004] [<ffffffff81904103>] entry_SYSCALL64_slow_path+0x25/0x25 [ 209.453007] ---[ end trace b995e24e590f8b86 ]--- [ 209.453541] ------------[ cut here ]------------ [ 209.453548] WARNING: CPU: 0 PID: 3072 at fs/ext4/namei.c:2860 ext4_orphan_del+0x18c/0x2a0 [ 209.453550] Modules linked in: binfmt_misc veth ip6t_MASQUERADE nf_nat_masquerade_ipv6 ip6table_nat nf_conntrack_ipv6 nf_defrag_ipv6 nf_nat_ipv6 ip6_tables xt_CHECKSUM iptable_mangle ipt_MASQUERADE nf_nat_masquerade_ipv4 iptable_nat nf_conntrack_ipv4 nf_defrag_ipv4 nf_nat_ipv4 nf_nat nf_conntrack xt_tcpudp bridge stp llc iptable_filter ip_tables x_tables ppdev kvm_intel kvm irqbypass nls_utf8 isofs joydev input_leds serio_raw i2c_piix4 pvpanic parport_pc 8250_fintek mac_hid parport ib_iser rdma_cm iw_cm ib_cm ib_sa ib_mad ib_core ib_addr configfs iscsi_tcp libiscsi_tcp libiscsi scsi_transport_iscsi autofs4 btrfs raid10 raid456 async_raid6_recov async_memcpy async_pq async_xor async_tx xor raid6_pq libcrc32c raid1 raid0 multipath linear cirrus ttm drm_kms_helper syscopyarea sysfillrect sysimgblt fb_sys_fops [ 209.453625] psmouse drm pata_acpi floppy [ 209.453632] CPU: 0 PID: 3072 Comm: bash Tainted: G W 4.6.0-rc5+ #11 [ 209.453635] Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS Bochs 01/01/2011 [ 209.453637] 0000000000000286 00000000ccc8425d ffff88007a1cfa18 ffffffff8145dae3 [ 209.453641] 0000000000000000 0000000000000000 ffff88007a1cfa58 ffffffff8108c25b [ 209.453646] 00000b2c8103fca9 ffff880052efe340 ffff88007c3ba0c0 ffff88007c3ba0c0 [ 209.453650] Call Trace: [ 209.453655] [<ffffffff8145dae3>] dump_stack+0x85/0xc2 [ 209.453658] [<ffffffff8108c25b>] __warn+0xcb/0xf0 [ 209.453662] [<ffffffff8108c38d>] warn_slowpath_null+0x1d/0x20 [ 209.453665] [<ffffffff81313d0c>] ext4_orphan_del+0x18c/0x2a0 [ 209.453668] [<ffffffff81903cf7>] ? _raw_write_unlock+0x27/0x40 [ 209.453673] [<ffffffff81306d72>] ext4_truncate+0x422/0x5b0 [ 209.453692] [<ffffffff81309447>] ext4_setattr+0x627/0xa40 [ 209.453697] [<ffffffff813b6483>] ? security_prepare_creds+0x43/0x60 [ 209.453701] [<ffffffff810b63d2>] ? creds_are_invalid.part.1+0x12/0x40 [ 209.453705] [<ffffffff81396491>] shiftfs_setattr+0x181/0x202 [ 209.453709] [<ffffffff812831f5>] notify_change+0x235/0x360 [ 209.453712] [<ffffffff8125f057>] do_truncate+0x77/0xc0 [ 209.453716] [<ffffffff81271959>] path_openat+0x269/0x1350 [ 209.453720] [<ffffffff81273f01>] do_filp_open+0x91/0x100 [ 209.453724] [<ffffffff819036d7>] ? _raw_spin_unlock+0x27/0x40 [ 209.453727] [<ffffffff81284799>] ? __alloc_fd+0xf9/0x210 [ 209.453731] [<ffffffff81260654>] do_sys_open+0x124/0x210 [ 209.453734] [<ffffffff8126075e>] SyS_open+0x1e/0x20 [ 209.453738] [<ffffffff81003f89>] do_syscall_64+0x69/0x160 [ 209.453741] [<ffffffff81904103>] entry_SYSCALL64_slow_path+0x25/0x25 [ 209.453745] ---[ end trace b995e24e590f8b87 ]--- -- To unsubscribe from this list: send the line "unsubscribe linux-fsdevel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
diff --git a/fs/shiftfs.c b/fs/shiftfs.c index d352377..2699b95 100644 --- a/fs/shiftfs.c +++ b/fs/shiftfs.c @@ -525,6 +525,9 @@ static int shiftfs_permission(struct inode *inode, int mask) int err; const struct cred *oldcred, *newcred; + if (mask & MAY_NOT_BLOCK) + return -ECHILD; + oldcred = shiftfs_new_creds(&newcred, inode->i_sb); if (iop->permission) err = iop->permission(reali, mask); @@ -598,6 +601,15 @@ static int shiftfs_release(struct inode *inode, struct file *file) if (sfc->release) err = sfc->release(inode, file); +#ifdef CONFIG_IMA + /* FIXME: IMA calls aren't balanced across ->open ->release + * they occur after ->open and after ->release, so manually + * swizzle here */ + + if ((file->f_mode & (FMODE_READ | FMODE_WRITE)) == FMODE_READ) + i_readcount_dec(sfc->inode); +#endif + file->f_inode = sfc->inode; file->f_op = sfc->inode->i_fop; fops_put(inode->i_fop); @@ -631,6 +643,16 @@ static int shiftfs_open(struct inode *inode, struct file *file) file->f_op = &sfc->fop; file->f_inode = reali; +#ifdef CONFIG_IMA + /* FIXME: IMA calls always operate on a saved copy of the + * inode so they increment the above and decrement the + * underlying. fix that here */ + + if ((file->f_mode & (FMODE_READ | FMODE_WRITE)) == FMODE_READ) + i_readcount_inc(reali); +#endif + + if (fop->open) err = fop->open(reali, file);