linux/fs/ceph
Alex Elder b7d68a7434 ceph: avoid 32-bit page index overflow
(cherry picked from commit 6285bc2312)

A pgoff_t is defined (by default) to have type (unsigned long).  On
architectures such as i686 that's a 32-bit type.  The ceph address
space code was attempting to produce 64 bit offsets by shifting a
page's index by PAGE_CACHE_SHIFT, but the result was not what was
desired because the shift occurred before the result got promoted
to 64 bits.

Fix this by converting all uses of page->index used in this way to
use the page_offset() macro, which ensures the 64-bit result has the
intended value.

This fixes http://tracker.newdream.net/issues/3112

Reported-by:  Mohamed Pakkeer <pakkeer.mohideen@realimage.com>
Signed-off-by: Alex Elder <elder@inktank.com>
Reviewed-by: Sage Weil <sage@inktank.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2012-11-26 11:38:44 -08:00
..
addr.c ceph: avoid 32-bit page index overflow 2012-11-26 11:38:44 -08:00
caps.c Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/sage/ceph-client 2012-02-02 15:47:33 -08:00
ceph_frag.c ceph: factor out libceph from Ceph file system 2010-10-20 15:37:28 -07:00
debugfs.c libceph: delay debugfs initialization until we learn global_id 2012-11-26 11:38:43 -08:00
dir.c Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/sage/ceph-client 2012-02-02 15:47:33 -08:00
export.c tmpfs,ceph,gfs2,isofs,reiserfs,xfs: fix fh_len checking 2012-10-21 09:27:57 -07:00
file.c ceph: fix SEEK_CUR, SEEK_SET regression 2011-12-13 09:19:26 -08:00
inode.c ceph: avoid panic with mismatched symlink sizes in fill_inode() 2012-03-22 10:47:45 -05:00
ioctl.c ceph: use i_ceph_lock instead of i_lock 2011-12-07 10:46:44 -08:00
ioctl.h ceph: document ioctls 2011-10-25 16:10:15 -07:00
Kconfig ceph: factor out libceph from Ceph file system 2010-10-20 15:37:28 -07:00
locks.c ceph: unwind canceled flock state 2011-06-07 21:36:45 -07:00
Makefile ceph: Makefile: Remove unnessary code 2011-01-12 15:15:13 -08:00
mds_client.c ceph: Fix oops when handling mdsmap that decreases max_mds 2012-11-26 11:38:44 -08:00
mds_client.h ceph: define ceph_auth_handshake type 2012-11-26 11:38:07 -08:00
mdsmap.c ceph: factor out libceph from Ceph file system 2010-10-20 15:37:28 -07:00
snap.c ceph: fix overflow check in build_snap_context() 2012-03-22 10:47:45 -05:00
strings.c ceph: factor out libceph from Ceph file system 2010-10-20 15:37:28 -07:00
super.c Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/sage/ceph-client 2012-03-28 10:01:29 -07:00
super.h ceph: avoid repeatedly computing the size of constant vxattr names 2012-03-22 10:47:46 -05:00
xattr.c ceph: fix three bugs, two in ceph_vxattrcb_file_layout() 2012-03-22 10:47:52 -05:00