mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2024-10-31 16:38:12 +00:00
gfs2 fix
- Fix boundary check in punch_hole -----BEGIN PGP SIGNATURE----- iQJIBAABCAAyFiEEJZs3krPW0xkhLMTc1b+f6wMTZToFAmYBaM0UHGFncnVlbmJh QHJlZGhhdC5jb20ACgkQ1b+f6wMTZTrzqw/9GpK71h1dIA8vYqInumdrUabksLKy jRMR2ZxfzBKLdAfgn9AS3nrWNos72vjAxbjYCi/fbY9uvIK1/zzq7Ef7601kCetM NzxShY8AwLJa9mO8O5yReLL7O/61gjlcdD6rSjkYwphWuobd5vpudKkibgpdJyH8 bn6U1/2K5ASFtWyTRbudOIsz4AqPUE6ZB4KxSuCDx7uFiQjnuh6sk8wfg48pdig7 GAsNPmBFfWAQXClPnI/WFG0hpkuRIK1hk9ITWx1ybu2JqaNeVXRBqGoRZbEkPYju qEkp4oT3j/1siBz1sMOjC5tfmAzhLvAeL61pD2EOcm5Bpd3iKJibYt/uCIpYFHM0 WfRcUmqEduN1zhDuSR4KSe49JQ5dFXVf83YqUgbtrHFiHHXNBYYqFNUVfcDAB1p7 IH9AlNd82zyxJ3fsBX7VpEbGC2qNa3K8hYO7px8DNVrPGzW7AhPF1Lsh0OE9GlZU H5f70Nryi98iwadbePBUchTrx0S3iYjk2TQgLGf5L/lAl6J/MRNG31kittDtehri cct/JBr8sUAK014TS5NxPbpxqDnVot3UsYk7h6s7WdmM1svfs7j5f1mo3ovMEGqX io5Z6pFEE7n1ce5hbieDKr3JFh6LxP1ArUSY8oz5rR0shE2XHMcIdq3J26Vfi0Q0 4VjdBic/7rUUBXI= =QXEK -----END PGP SIGNATURE----- Merge tag 'gfs2-v6.8-fix' of git://git.kernel.org/pub/scm/linux/kernel/git/gfs2/linux-gfs2 Pull gfs2 fix from Andreas Gruenbacher: - Fix boundary check in punch_hole * tag 'gfs2-v6.8-fix' of git://git.kernel.org/pub/scm/linux/kernel/git/gfs2/linux-gfs2: gfs2: Fix invalid metadata access in punch_hole
This commit is contained in:
commit
928a87efa4
1 changed files with 3 additions and 2 deletions
|
@ -1718,7 +1718,8 @@ static int punch_hole(struct gfs2_inode *ip, u64 offset, u64 length)
|
||||||
struct buffer_head *dibh, *bh;
|
struct buffer_head *dibh, *bh;
|
||||||
struct gfs2_holder rd_gh;
|
struct gfs2_holder rd_gh;
|
||||||
unsigned int bsize_shift = sdp->sd_sb.sb_bsize_shift;
|
unsigned int bsize_shift = sdp->sd_sb.sb_bsize_shift;
|
||||||
u64 lblock = (offset + (1 << bsize_shift) - 1) >> bsize_shift;
|
unsigned int bsize = 1 << bsize_shift;
|
||||||
|
u64 lblock = (offset + bsize - 1) >> bsize_shift;
|
||||||
__u16 start_list[GFS2_MAX_META_HEIGHT];
|
__u16 start_list[GFS2_MAX_META_HEIGHT];
|
||||||
__u16 __end_list[GFS2_MAX_META_HEIGHT], *end_list = NULL;
|
__u16 __end_list[GFS2_MAX_META_HEIGHT], *end_list = NULL;
|
||||||
unsigned int start_aligned, end_aligned;
|
unsigned int start_aligned, end_aligned;
|
||||||
|
@ -1729,7 +1730,7 @@ static int punch_hole(struct gfs2_inode *ip, u64 offset, u64 length)
|
||||||
u64 prev_bnr = 0;
|
u64 prev_bnr = 0;
|
||||||
__be64 *start, *end;
|
__be64 *start, *end;
|
||||||
|
|
||||||
if (offset >= maxsize) {
|
if (offset + bsize - 1 >= maxsize) {
|
||||||
/*
|
/*
|
||||||
* The starting point lies beyond the allocated metadata;
|
* The starting point lies beyond the allocated metadata;
|
||||||
* there are no blocks to deallocate.
|
* there are no blocks to deallocate.
|
||||||
|
|
Loading…
Reference in a new issue