OSDN Git Service

xfs: fix iclog allocation size
authorChristoph Hellwig <hch@lst.de>
Sat, 29 Jun 2019 02:31:36 +0000 (19:31 -0700)
committerDarrick J. Wong <darrick.wong@oracle.com>
Sat, 29 Jun 2019 04:02:45 +0000 (21:02 -0700)
Properly allocate the space for the bio_vecs instead of just one byte
per bio_vec.

Fixes: 79b54d9bfcdcd0a ("xfs: use bios directly to write log buffers")
Reported-by: syzbot+b75afdbe271a0d7ac4f6@syzkaller.appspotmail.com
Signed-off-by: Christoph Hellwig <hch@lst.de>
Reviewed-by: Darrick J. Wong <darrick.wong@oracle.com>
Signed-off-by: Darrick J. Wong <darrick.wong@oracle.com>
fs/xfs/xfs_log.c

index 92cd44a..cbaf348 100644 (file)
@@ -1411,7 +1411,8 @@ xlog_alloc_log(
         */
        ASSERT(log->l_iclog_size >= 4096);
        for (i = 0; i < log->l_iclog_bufs; i++) {
-               size_t bvec_size = howmany(log->l_iclog_size, PAGE_SIZE);
+               size_t bvec_size = howmany(log->l_iclog_size, PAGE_SIZE) *
+                               sizeof(struct bio_vec);
 
                iclog = kmem_zalloc(sizeof(*iclog) + bvec_size, KM_MAYFAIL);
                if (!iclog)