android_kernel_samsung_msm8976/arch/powerpc/kernel
David Howells afefdbb28a [PATCH] VFS: Make filldir_t and struct kstat deal in 64-bit inode numbers
These patches make the kernel pass 64-bit inode numbers internally when
communicating to userspace, even on a 32-bit system.  They are required
because some filesystems have intrinsic 64-bit inode numbers: NFS3+ and XFS
for example.  The 64-bit inode numbers are then propagated to userspace
automatically where the arch supports it.

Problems have been seen with userspace (eg: ld.so) using the 64-bit inode
number returned by stat64() or getdents64() to differentiate files, and
failing because the 64-bit inode number space was compressed to 32-bits, and
so overlaps occur.

This patch:

Make filldir_t take a 64-bit inode number and struct kstat carry a 64-bit
inode number so that 64-bit inode numbers can be passed back to userspace.

The stat functions then returns the full 64-bit inode number where
available and where possible.  If it is not possible to represent the inode
number supplied by the filesystem in the field provided by userspace, then
error EOVERFLOW will be issued.

Similarly, the getdents/readdir functions now pass the full 64-bit inode
number to userspace where possible, returning EOVERFLOW instead when a
directory entry is encountered that can't be properly represented.

Note that this means that some inodes will not be stat'able on a 32-bit
system with old libraries where they were before - but it does mean that
there will be no ambiguity over what a 32-bit inode number refers to.

Note similarly that directory scans may be cut short with an error on a
32-bit system with old libraries where the scan would work before for the
same reasons.

It is judged unlikely that this situation will occur because modern glibc
uses 64-bit capable versions of stat and getdents class functions
exclusively, and that older systems are unlikely to encounter
unrepresentable inode numbers anyway.

[akpm: alpha build fix]
Signed-off-by: David Howells <dhowells@redhat.com>
Cc: Trond Myklebust <trond.myklebust@fys.uio.no>
Cc: Al Viro <viro@zeniv.linux.org.uk>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
2006-10-03 08:03:40 -07:00
..
vdso32 [PATCH] vDSO hash-style fix 2006-07-31 13:28:43 -07:00
vdso64 [PATCH] vDSO hash-style fix 2006-07-31 13:28:43 -07:00
align.c [PATCH] powerpc: Implement support for setting little-endian mode via prctl 2006-06-09 21:24:15 +10:00
asm-offsets.c [POWERPC] Fix non-smp build 2006-09-14 10:36:11 +10:00
audit.c [PATCH] audit: AUDIT_PERM support 2006-09-11 13:32:30 -04:00
binfmt_elf32.c Remove obsolete #include <linux/config.h> 2006-06-30 19:25:36 +02:00
btext.c [POWERPC] Constify & voidify get_property() 2006-07-31 15:55:04 +10:00
compat_audit.c [PATCH] audit: AUDIT_PERM support 2006-09-11 13:32:30 -04:00
cpu_setup_6xx.S Remove obsolete #include <linux/config.h> 2006-06-30 19:25:36 +02:00
cpu_setup_ppc970.S Merge branch 'merge' 2006-08-25 14:56:07 +10:00
cputable.c [POWERPC] Add AT_PLATFORM value for Xilinx Virtex-4 FX 2006-09-21 22:54:54 +10:00
crash.c [POWERPC] Fix interrupt clearing in kdump shutdown sequence 2006-09-13 18:31:23 +10:00
crash_dump.c [POWERPC] Make doc comments extractable 2006-08-08 17:07:04 +10:00
dma_64.c [POWERPC] Simplify dma_ops bug conditions 2006-07-31 15:55:06 +10:00
entry_32.S Remove obsolete #include <linux/config.h> 2006-06-30 19:25:36 +02:00
entry_64.S [POWERPC] SLB shadow buffer cleanup 2006-08-25 13:17:08 +10:00
firmware.c Remove obsolete #include <linux/config.h> 2006-06-30 19:25:36 +02:00
fpu.S [POWERPC] Restore copyright notice in arch/powerpc/kernel/fpu.S 2006-08-30 14:45:35 +10:00
head_4xx.S Remove obsolete #include <linux/config.h> 2006-06-30 19:25:36 +02:00
head_8xx.S Remove obsolete #include <linux/config.h> 2006-06-30 19:25:36 +02:00
head_32.S Remove obsolete #include <linux/config.h> 2006-06-30 19:25:36 +02:00
head_44x.S Remove obsolete #include <linux/config.h> 2006-06-30 19:25:36 +02:00
head_64.S [POWERPC] powerpc: Reduce default cacheline size to 64 bytes 2006-09-13 18:39:52 +10:00
head_booke.h
head_fsl_booke.S Remove obsolete #include <linux/config.h> 2006-06-30 19:25:36 +02:00
ibmebus.c Merge branch 'merge' 2006-08-01 10:37:25 +10:00
idle.c Remove obsolete #include <linux/config.h> 2006-06-30 19:25:36 +02:00
idle_6xx.S Remove obsolete #include <linux/config.h> 2006-06-30 19:25:36 +02:00
idle_power4.S Remove obsolete #include <linux/config.h> 2006-06-30 19:25:36 +02:00
init_task.c [PATCH] nsproxy: move init_nsproxy into kernel/nsproxy.c 2006-10-02 07:57:20 -07:00
io.c [POWERPC] Merge iSeries i/o operations with the rest 2006-09-22 15:19:58 +10:00
iomap.c
iommu.c Remove obsolete #include <linux/config.h> 2006-06-30 19:25:36 +02:00
irq.c Merge branch 'merge' 2006-08-31 15:45:48 +10:00
kprobes.c [PATCH] kretprobe spinlock deadlock patch 2006-10-02 07:57:16 -07:00
l2cr_6xx.S Remove obsolete #include <linux/config.h> 2006-06-30 19:25:36 +02:00
legacy_serial.c Merge branch 'merge' 2006-08-25 14:56:07 +10:00
lparcfg.c [POWERPC] clean up pseries hcall interfaces 2006-08-01 16:19:15 +10:00
lparmap.c
machine_kexec.c [POWERPC] Move some kexec logic into machine_kexec.c 2006-08-17 16:41:10 +10:00
machine_kexec_32.c Storage class should be first 2006-06-26 18:57:34 +02:00
machine_kexec_64.c Merge branch 'merge' 2006-08-25 14:56:07 +10:00
Makefile [POWERPC] convert string i/o operations to C 2006-09-20 14:06:18 +10:00
misc.S [POWERPC] convert string i/o operations to C 2006-09-20 14:06:18 +10:00
misc_32.S [PATCH] rename the provided execve functions to kernel_execve 2006-10-02 07:57:23 -07:00
misc_64.S [PATCH] rename the provided execve functions to kernel_execve 2006-10-02 07:57:23 -07:00
module_32.c
module_64.c [PATCH] powerpc64: Fix loading of modules without a .toc section 2006-04-28 21:04:49 +10:00
nvram_64.c [PATCH] nvram_print_partitions cosmetic fixup 2006-04-29 18:08:05 +10:00
of_device.c [POWERPC] Remove linux,device properties 2006-07-07 20:19:16 +10:00
paca.c [POWERPC] Implement SLB shadow buffer 2006-08-08 17:08:56 +10:00
pci_32.c Merge branch 'merge' 2006-08-01 10:37:25 +10:00
pci_64.c Merge branch 'merge' 2006-08-31 15:45:48 +10:00
pci_direct_iommu.c [POWERPC] cleanup dma_mapping_ops 2006-06-15 19:31:26 +10:00
pci_dn.c [POWERPC] Constify & voidify get_property() 2006-07-31 15:55:04 +10:00
pci_iommu.c [POWERPC] cleanup dma_mapping_ops 2006-06-15 19:31:26 +10:00
perfmon_fsl_booke.c Remove obsolete #include <linux/config.h> 2006-06-30 19:25:36 +02:00
pmc.c Remove obsolete #include <linux/config.h> 2006-06-30 19:25:36 +02:00
ppc32.h
ppc_ksyms.c [POWERPC] convert string i/o operations to C 2006-09-20 14:06:18 +10:00
proc_ppc64.c Remove obsolete #include <linux/config.h> 2006-06-30 19:25:36 +02:00
process.c [PATCH] namespaces: utsname: use init_utsname when appropriate 2006-10-02 07:57:21 -07:00
prom.c [POWERPC] Define of_read_ulong helper 2006-09-20 15:09:48 +10:00
prom_init.c Merge branch 'merge' 2006-08-31 15:45:48 +10:00
prom_parse.c Merge branch 'merge' 2006-08-31 15:45:48 +10:00
ptrace-common.h Remove obsolete #include <linux/config.h> 2006-06-30 19:25:36 +02:00
ptrace.c Remove obsolete #include <linux/config.h> 2006-06-30 19:25:36 +02:00
ptrace32.c Remove obsolete #include <linux/config.h> 2006-06-30 19:25:36 +02:00
rtas-proc.c [POWERPC] Constify & voidify get_property() 2006-07-31 15:55:04 +10:00
rtas-rtc.c [PATCH] powerpc: reorg RTAS delay code 2006-06-09 21:21:06 +10:00
rtas.c [POWERPC] reboot when panic_timout is set 2006-08-25 13:30:26 +10:00
rtas_flash.c [PATCH] powerpc: reorg RTAS delay code 2006-06-09 21:21:06 +10:00
rtas_pci.c [POWERPC] Add a helper for calculating RTAS "config_addr" parameters 2006-08-25 13:27:35 +10:00
semaphore.c
setup-common.c [POWERPC] Define of_read_ulong helper 2006-09-20 15:09:48 +10:00
setup.h [PATCH] powerpc: Make early xmon logic immune to location of early parsing 2006-05-19 15:02:12 +10:00
setup_32.c [PATCH] remove SYSRQ_KEY and related defines from ppc/sh/h8300 2006-10-01 00:39:22 -07:00
setup_64.c [PATCH] namespaces: utsname: use init_utsname when appropriate 2006-10-02 07:57:21 -07:00
signal_32.c Remove obsolete #include <linux/config.h> 2006-06-30 19:25:36 +02:00
signal_64.c Remove obsolete #include <linux/config.h> 2006-06-30 19:25:36 +02:00
smp-tbsync.c [POWERPC] Fix irq enable/disable in smp_generic_take_timebase 2006-08-30 16:10:47 +10:00
smp.c [POWERPC] Fix non-MPIC CHRPs with CONFIG_SMP set 2006-07-26 01:27:04 +10:00
swsusp_32.S [PATCH] Change the name of pagedir_nosave 2006-09-26 08:49:01 -07:00
sys_ppc32.c [PATCH] VFS: Make filldir_t and struct kstat deal in 64-bit inode numbers 2006-10-03 08:03:40 -07:00
syscalls.c [PATCH] namespaces: utsname: switch to using uts namespaces 2006-10-02 07:57:21 -07:00
sysfs.c [POWERPC] Enable PURR sysfs entry correctly 2006-08-07 12:03:49 +10:00
systbl.S Remove obsolete #include <linux/config.h> 2006-06-30 19:25:36 +02:00
tau_6xx.c Remove obsolete #include <linux/config.h> 2006-06-30 19:25:36 +02:00
time.c [PATCH] kill wall_jiffies 2006-10-01 00:39:27 -07:00
traps.c [POWERPC] Emulate power5 popcntb instruction 2006-09-13 18:39:52 +10:00
udbg.c Remove obsolete #include <linux/config.h> 2006-06-30 19:25:36 +02:00
udbg_16550.c [POWERPC] Fix default clock for udbg_16550 2006-07-26 01:27:13 +10:00
vdso.c Remove obsolete #include <linux/config.h> 2006-06-30 19:25:36 +02:00
vecemu.c
vector.S Remove obsolete #include <linux/config.h> 2006-06-30 19:25:36 +02:00
vio.c [POWERPC] Constify & voidify get_property() 2006-07-31 15:55:04 +10:00
vmlinux.lds.S Remove obsolete #include <linux/config.h> 2006-06-30 19:25:36 +02:00