From: Greg KH <gregkh@suse.de>
To: linux-kernel@vger.kernel.org, stable@kernel.org
Cc: stable-review@kernel.org, torvalds@linux-foundation.org,
akpm@linux-foundation.org, alan@lxorguk.ukuu.org.uk,
Jeff Mahoney <jeffm@suse.com>,
Edward Shishkin <edward.shishkin@gmail.com>,
Frederic Weisbecker <fweisbec@gmail.com>,
Al Viro <viro@zeniv.linux.org.uk>
Subject: [014/117] reiserfs: fix permissions on .reiserfs_priv
Date: Mon, 10 May 2010 15:31:45 -0700 [thread overview]
Message-ID: <20100510223318.448981612@kvm.kroah.org> (raw)
In-Reply-To: <20100510223700.GA18404@kroah.com>
2.6.33-stable review patch. If anyone has any objections, please let us know.
------------------
From: Jeff Mahoney <jeffm@suse.com>
commit cac36f707119b792b2396aed371d6b5cdc194890 upstream.
Commit 677c9b2e393a0cd203bd54e9c18b012b2c73305a ("reiserfs: remove
privroot hiding in lookup") removed the magic from the lookup code to hide
the .reiserfs_priv directory since it was getting loaded at mount-time
instead. The intent was that the entry would be hidden from the user via
a poisoned d_compare, but this was faulty.
This introduced a security issue where unprivileged users could access and
modify extended attributes or ACLs belonging to other users, including
root.
This patch resolves the issue by properly hiding .reiserfs_priv. This was
the intent of the xattr poisoning code, but it appears to have never
worked as expected. This is fixed by using d_revalidate instead of
d_compare.
This patch makes -oexpose_privroot a no-op. I'm fine leaving it this way.
The effort involved in working out the corner cases wrt permissions and
caching outweigh the benefit of the feature.
Signed-off-by: Jeff Mahoney <jeffm@suse.com>
Acked-by: Edward Shishkin <edward.shishkin@gmail.com>
Reported-by: Matt McCutchen <matt@mattmccutchen.net>
Tested-by: Matt McCutchen <matt@mattmccutchen.net>
Cc: Frederic Weisbecker <fweisbec@gmail.com>
Cc: Al Viro <viro@zeniv.linux.org.uk>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
---
fs/reiserfs/dir.c | 2 --
fs/reiserfs/xattr.c | 17 ++++-------------
2 files changed, 4 insertions(+), 15 deletions(-)
--- a/fs/reiserfs/dir.c
+++ b/fs/reiserfs/dir.c
@@ -45,8 +45,6 @@ static inline bool is_privroot_deh(struc
struct reiserfs_de_head *deh)
{
struct dentry *privroot = REISERFS_SB(dir->d_sb)->priv_root;
- if (reiserfs_expose_privroot(dir->d_sb))
- return 0;
return (dir == dir->d_parent && privroot->d_inode &&
deh->deh_objectid == INODE_PKEY(privroot->d_inode)->k_objectid);
}
--- a/fs/reiserfs/xattr.c
+++ b/fs/reiserfs/xattr.c
@@ -976,21 +976,13 @@ int reiserfs_permission(struct inode *in
return generic_permission(inode, mask, NULL);
}
-/* This will catch lookups from the fs root to .reiserfs_priv */
-static int
-xattr_lookup_poison(struct dentry *dentry, struct qstr *q1, struct qstr *name)
+static int xattr_hide_revalidate(struct dentry *dentry, struct nameidata *nd)
{
- struct dentry *priv_root = REISERFS_SB(dentry->d_sb)->priv_root;
- if (container_of(q1, struct dentry, d_name) == priv_root)
- return -ENOENT;
- if (q1->len == name->len &&
- !memcmp(q1->name, name->name, name->len))
- return 0;
- return 1;
+ return -EPERM;
}
static const struct dentry_operations xattr_lookup_poison_ops = {
- .d_compare = xattr_lookup_poison,
+ .d_revalidate = xattr_hide_revalidate,
};
int reiserfs_lookup_privroot(struct super_block *s)
@@ -1004,8 +996,7 @@ int reiserfs_lookup_privroot(struct supe
strlen(PRIVROOT_NAME));
if (!IS_ERR(dentry)) {
REISERFS_SB(s)->priv_root = dentry;
- if (!reiserfs_expose_privroot(s))
- s->s_root->d_op = &xattr_lookup_poison_ops;
+ dentry->d_op = &xattr_lookup_poison_ops;
if (dentry->d_inode)
dentry->d_inode->i_flags |= S_PRIVATE;
} else
next prev parent reply other threads:[~2010-05-10 22:52 UTC|newest]
Thread overview: 128+ messages / expand[flat|nested] mbox.gz Atom feed top
2010-05-10 22:37 [000/117] 2.6.33.4-stable review Greg KH
2010-05-10 22:31 ` [001/117] USB: EHCI: defer reclamation of siTDs Greg KH
2010-05-10 22:31 ` [002/117] p54usb: Add usbid for Corega CG-WLUSB2GT Greg KH
2010-05-10 22:31 ` [003/117] drm/i915: Add initial bits for VGA modesetting bringup on Sandybridge Greg KH
2010-05-11 2:47 ` Eric Anholt
2010-05-11 15:04 ` Greg KH
2010-05-10 22:31 ` [004/117] drm/i915: fix tiling limits for i915 class hw v2 Greg KH
2010-05-10 22:31 ` [005/117] md/raid5: allow for more than 2^31 chunks Greg KH
2010-05-10 22:31 ` [006/117] md/raid5: fix previous patch Greg KH
2010-05-10 22:31 ` [007/117] libata: fix locking around blk_abort_request() Greg KH
2010-05-10 22:31 ` [008/117] libata: ensure NCQ error result taskfile is fully initialized Greg KH
2010-05-10 22:31 ` [009/117] w1: w1 temp: fix negative termperature calculation Greg KH
2010-05-10 22:31 ` [010/117] memcg: fix prepare migration Greg KH
2010-05-10 22:31 ` [011/117] mac80211: remove bogus TX agg state assignment Greg KH
2010-05-10 22:31 ` [012/117] flex_array: fix the panic when calling flex_array_alloc() without __GFP_ZERO Greg KH
2010-05-10 22:31 ` [013/117] hugetlb: fix infinite loop in get_futex_key() when backed by huge pages Greg KH
2010-05-10 22:31 ` Greg KH [this message]
2010-05-10 22:31 ` [015/117] reiserfs: fix corruption during shrinking of xattrs Greg KH
2010-05-10 22:31 ` [016/117] procfs: fix tid fdinfo Greg KH
2010-05-10 22:31 ` [017/117] nfsd4: bug in read_buf Greg KH
2010-05-10 22:31 ` [018/117] keys: the request_key() syscall should link an existing key to the dest keyring Greg KH
2010-05-10 22:31 ` [019/117] sfc: Wait at most 10ms for the MC to finish reading out MAC statistics Greg KH
2010-05-10 22:31 ` [020/117] sfc: Always close net device at the end of a disabling reset Greg KH
2010-05-10 22:31 ` [021/117] sfc: Change falcon_probe_board() to fail for unsupported boards Greg KH
2010-05-10 22:31 ` [022/117] staging: usbip: Fix deadlock Greg KH
2010-05-10 22:31 ` [023/117] USB: fix remote wakeup settings during system sleep Greg KH
2010-05-10 22:31 ` [024/117] USB: Add id for HP ev2210 a.k.a Sierra MC5725 miniPCI-e Cell Modem Greg KH
2010-05-10 22:31 ` [025/117] USB: dont read past config->interface[] if usb_control_msg() fails in usb_reset_configuration() Greg KH
2010-05-10 22:31 ` [026/117] USB: fix testing the wrong variable in fs_create_by_name() Greg KH
2010-05-10 22:31 ` [027/117] USB: dont choose configs with no interfaces Greg KH
2010-05-10 22:31 ` [028/117] USB: OHCI: dont look at the root hub to get the number of ports Greg KH
2010-05-10 22:32 ` [029/117] USB: xhci: properly set the "Mult" field of the endpoint context Greg KH
2010-05-10 22:32 ` [030/117] USB: xhci: properly set endpoint context fields for periodic eps Greg KH
2010-05-10 22:32 ` [031/117] ocfs2: Update VFS inodes id info after reflink Greg KH
2010-05-10 22:32 ` [032/117] ocfs2: potential ERR_PTR dereference on error paths Greg KH
2010-05-10 22:32 ` [033/117] ocfs2: Compute metaecc for superblocks during online resize Greg KH
2010-05-10 22:32 ` [034/117] ocfs2_dlmfs: Fix math error when reading LVB Greg KH
2010-05-10 22:32 ` [035/117] powernow-k8: Fix frequency reporting Greg KH
2010-05-10 22:32 ` [036/117] nfs d_revalidate() is too trigger-happy with d_drop() Greg KH
2010-05-10 22:32 ` [037/117] NFS: rsize and wsize settings ignored on v4 mounts Greg KH
2010-05-10 22:32 ` [038/117] Staging: hv: Fix a bug affecting IPv6 Greg KH
2010-05-10 22:32 ` [039/117] Staging: hv: Fix up memory leak on HvCleanup Greg KH
2010-05-10 22:32 ` [040/117] Staging: hv: name network device ethX rather than sethX Greg KH
2010-05-10 22:32 ` [041/117] i2c: Fix probing of FSC hardware monitoring chips Greg KH
2010-05-10 22:32 ` [042/117] perf: Fix resource leak in failure path of perf_event_open() Greg KH
2010-05-10 22:32 ` [043/117] raid6: fix recovery performance regression Greg KH
2010-05-10 22:32 ` [044/117] serial: 8250_pnp - add Fujitsu Wacom device Greg KH
2010-05-10 22:32 ` [045/117] block: ensure jiffies wrap is handled correctly in blk_rq_timed_out_timer Greg KH
2010-05-10 22:32 ` [046/117] Revert "memory-hotplug: add 0x prefix to HEX block_size_bytes" Greg KH
2010-05-10 22:32 ` [047/117] dm9601: fix phy/eeprom write routine Greg KH
2010-05-10 22:32 ` [048/117] p54pci: fix bugs in p54p_check_tx_ring Greg KH
2010-05-10 22:32 ` [049/117] edac, mce: Fix wrong mask and macro usage Greg KH
2010-05-10 22:32 ` [050/117] x86-64: Clear a 64-bit FS/GS base on fork if selector is nonzero Greg KH
2010-05-10 22:32 ` [051/117] x86: Disable large pages on CPUs with Atom erratum AAE44 Greg KH
2010-05-10 22:32 ` [052/117] x86: Fix NULL pointer access in irq_force_complete_move() for Xen guests Greg KH
2010-05-10 22:32 ` [053/117] x86, k8 nb: Fix boot crash: enable k8_northbridges unconditionally on AMD systems Greg KH
2010-05-10 22:32 ` [054/117] ALSA: hda: Use LPIB quirk for DG965OT board version AAD63733-203 Greg KH
2010-05-10 22:32 ` [055/117] ALSA: hda - Add PCI quirk for HP dv6-1110ax Greg KH
2010-05-10 22:32 ` [056/117] ALSA: hda: Use STAC_DELL_M6_BOTH quirk for Dell Studio XPS 1645 Greg KH
2010-05-10 22:32 ` [057/117] ALSA: hda: Use STAC_DELL_M6_BOTH quirk for Dell Studio 1558 Greg KH
2010-05-10 23:30 ` Nigel Cunningham
2010-05-11 5:53 ` Daniel Chen
2010-05-11 15:07 ` Greg KH
2010-05-11 19:15 ` Daniel Chen
2010-05-10 22:32 ` [058/117] ALSA: hda: Use ALC880_F1734 quirk for Fujitsu Siemens AMILO Xi 1526 Greg KH
2010-05-10 22:32 ` [059/117] ALSA: snd-meastro3: Add amp_gpio quirk for Compaq EVO N600C Greg KH
2010-05-10 22:32 ` [060/117] ALSA: snd-meastro3: Ignore spurious HV interrupts during suspend / resume Greg KH
2010-05-10 22:32 ` [061/117] ALSA: hda: Fix 0 dB for Packard Bell models using Conexant CX20549 (Venice) Greg KH
2010-05-10 22:32 ` [062/117] ALSA: hda: Use olpc-xo-1_5 quirk for Toshiba Satellite Pro T130-15F Greg KH
2010-05-10 22:32 ` [063/117] ALSA: hda: Use olpc-xo-1_5 quirk for Toshiba Satellite P500-PSPGSC-01800T Greg KH
2010-05-10 22:32 ` [064/117] PCI: Ensure we re-enable devices on resume Greg KH
2010-05-10 22:32 ` [065/117] libata: Fix accesses at LBA28 boundary (old bug, but nasty) (v2) Greg KH
2010-05-10 22:32 ` [066/117] ext4: correctly calculate number of blocks for fiemap Greg KH
2010-05-10 22:32 ` [067/117] initramfs: handle unrecognised decompressor when unpacking Greg KH
2010-05-10 22:32 ` [068/117] CRED: Fix a race in creds_are_invalid() in credentials debugging Greg KH
2010-05-10 22:32 ` [069/117] jfs: fix diAllocExt error in resizing filesystem Greg KH
2010-05-10 22:32 ` [070/117] drivers/net/wireless/p54/txrx.c Fix off by one error Greg KH
2010-05-10 22:32 ` [071/117] kgdb: dont needlessly skip PAGE_USER test for Fsl booke Greg KH
2010-05-10 22:32 ` [072/117] r8169: use correct barrier between cacheable and non-cacheable memory Greg KH
2010-05-10 22:32 ` [073/117] r8169: fix broken register writes Greg KH
2010-05-10 22:32 ` [074/117] r8169: more broken register writes workaround Greg KH
2010-05-10 22:32 ` [075/117] ath9k: reorder ieee80211_free_hw behind ath9k_uninit_hw to avoid oops Greg KH
2010-05-10 22:32 ` [076/117] [SCSI] skip sense logging for some ATA PASS-THROUGH cdbs Greg KH
2010-05-10 22:32 ` [077/117] tg3: Fix INTx fallback when MSI fails Greg KH
2010-05-10 22:32 ` [078/117] xfs: add a shrinker to background inode reclaim Greg KH
2010-05-11 14:46 ` Alex Elder
2010-05-10 22:32 ` [079/117] powerpc: Reset kernel stack on cpu online from cede state Greg KH
2010-05-10 22:32 ` [080/117] powerpc: Move checks in pseries_mach_cpu_die() Greg KH
2010-05-10 22:32 ` [081/117] powerpc: Reduce printk from pseries_mach_cpu_die() Greg KH
2010-05-10 22:32 ` [082/117] bnx2: Fix lost MSI-X problem on 5709 NICs Greg KH
2010-05-10 22:32 ` [083/117] cdc_ether: fix autosuspend for mbm devices Greg KH
2010-05-10 22:32 ` [084/117] ieee802154: Fix oops during ieee802154_sock_ioctl Greg KH
2010-05-10 22:32 ` [085/117] ipv6: Fix tcp_v6_send_response transport header setting Greg KH
2010-05-10 22:32 ` [086/117] sctp: avoid irq lock inversion while call sk->sk_data_ready() Greg KH
2010-05-10 22:32 ` [087/117] sctp: fix potential reference of a freed pointer Greg KH
2010-05-10 22:32 ` [088/117] sctp: per_cpu variables should be in bh_disabled section Greg KH
2010-05-10 22:33 ` [089/117] sctp: fix to calc the INIT/INIT-ACK chunk length correctly is set Greg KH
2010-05-10 22:33 ` [090/117] sctp: Fix oops when sending queued ASCONF chunks Greg KH
2010-05-10 22:33 ` [091/117] net: Fix oops from tcp_collapse() when using splice() Greg KH
2010-05-10 22:33 ` [092/117] tipc: Fix oops on send prior to entering networked mode (v3) Greg KH
2010-05-10 22:33 ` [093/117] tun: orphan an skb on tx Greg KH
2010-05-10 22:33 ` [094/117] udp: fix for unicast RX path optimization Greg KH
2010-05-10 22:33 ` [095/117] WAN: flush tx_queue in hdlc_ppp to prevent panic on rmmod hw_driver Greg KH
2010-05-10 22:33 ` [096/117] sparc64: Use correct pt_regs in decode_access_size() error paths Greg KH
2010-05-10 22:33 ` [097/117] sparc64: Fix PREEMPT_ACTIVE value Greg KH
2010-05-10 22:33 ` [098/117] sparc64: Fix hardirq tracing in trap return path Greg KH
2010-05-10 22:33 ` [099/117] sparc64: Use kstack_valid() in die_if_kernel() Greg KH
2010-05-10 22:33 ` [100/117] sparc64: Adjust __raw_local_irq_save() to cooperate in NMIs Greg KH
2010-05-10 22:33 ` [101/117] sparc64: Fix memory leak in pci_register_iommu_region() Greg KH
2010-05-10 22:33 ` [102/117] security: testing the wrong variable in create_by_name() Greg KH
2010-05-10 22:33 ` [103/117] md: restore ability of spare drives to spin down Greg KH
2010-05-10 22:33 ` [104/117] virtio: initialize earlier Greg KH
2010-05-10 22:33 ` [105/117] md/raid6: Fix raid-6 read-error correction in degraded state Greg KH
2010-05-10 22:33 ` [106/117] V4L/DVB: budget: Oops: "BUG: unable to handle kernel NULL pointer dereference" Greg KH
2010-05-10 22:33 ` [107/117] ACPI: DMI init_set_sci_en_on_resume for multiple Lenovo ThinkPads Greg KH
2010-05-11 3:38 ` Alex Chiang
2010-05-11 15:10 ` Greg KH
2010-05-11 16:21 ` Alex Chiang
2010-05-10 22:33 ` [108/117] power_meter: acpi_device_class "power_meter_resource" too long Greg KH
2010-05-10 22:33 ` [109/117] ACPI: sleep: init_set_sci_en_on_resume for Dell Studio 155x Greg KH
2010-05-10 22:33 ` [110/117] cpuidle: Fix incorrect optimization Greg KH
2010-05-10 22:33 ` [111/117] [ARM] pxa/colibri: fix missing #include <mach/mfp.h> in colibri.h Greg KH
2010-05-10 22:33 ` [112/117] SCSI: fix locking around blk_abort_request() Greg KH
2010-05-10 22:33 ` [113/117] SCSI: libiscsi: regression: fix header digest errors Greg KH
2010-05-10 22:33 ` [114/117] [SCSI] scsi_debug: virtual_gb ignores sector_size Greg KH
2010-05-10 22:33 ` [115/117] [SCSI] Enable retries for SYNCRONIZE_CACHE commands to fix I/O error Greg KH
2010-05-10 22:33 ` [116/117] SCSI: Retry commands with UNIT_ATTENTION sense codes to fix ext3/ext4 " Greg KH
2010-05-10 22:33 ` [117/117] MIPS: Sibyte: Apply M3 workaround only on affected chip types and versions Greg KH
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20100510223318.448981612@kvm.kroah.org \
--to=gregkh@suse.de \
--cc=akpm@linux-foundation.org \
--cc=alan@lxorguk.ukuu.org.uk \
--cc=edward.shishkin@gmail.com \
--cc=fweisbec@gmail.com \
--cc=jeffm@suse.com \
--cc=linux-kernel@vger.kernel.org \
--cc=stable-review@kernel.org \
--cc=stable@kernel.org \
--cc=torvalds@linux-foundation.org \
--cc=viro@zeniv.linux.org.uk \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
Powered by JetHome