mirror of
https://github.com/torvalds/linux.git
synced 2024-11-21 19:41:42 +00:00
bcachefs: fix uaf in bch2_dio_write_done()
Reported-by: syzbot+19ad84d5133871207377@syzkaller.appspotmail.com Signed-off-by: Kent Overstreet <kent.overstreet@linux.dev>
This commit is contained in:
parent
c986dd7ecb
commit
573ddcdc56
@ -369,6 +369,7 @@ static noinline void bch2_dio_write_flush(struct dio_write *dio)
|
|||||||
|
|
||||||
static __always_inline long bch2_dio_write_done(struct dio_write *dio)
|
static __always_inline long bch2_dio_write_done(struct dio_write *dio)
|
||||||
{
|
{
|
||||||
|
struct bch_fs *c = dio->op.c;
|
||||||
struct kiocb *req = dio->req;
|
struct kiocb *req = dio->req;
|
||||||
struct bch_inode_info *inode = dio->inode;
|
struct bch_inode_info *inode = dio->inode;
|
||||||
bool sync = dio->sync;
|
bool sync = dio->sync;
|
||||||
@ -387,7 +388,7 @@ static __always_inline long bch2_dio_write_done(struct dio_write *dio)
|
|||||||
ret = dio->op.error ?: ((long) dio->written << 9);
|
ret = dio->op.error ?: ((long) dio->written << 9);
|
||||||
bio_put(&dio->op.wbio.bio);
|
bio_put(&dio->op.wbio.bio);
|
||||||
|
|
||||||
bch2_write_ref_put(dio->op.c, BCH_WRITE_REF_dio_write);
|
bch2_write_ref_put(c, BCH_WRITE_REF_dio_write);
|
||||||
|
|
||||||
/* inode->i_dio_count is our ref on inode and thus bch_fs */
|
/* inode->i_dio_count is our ref on inode and thus bch_fs */
|
||||||
inode_dio_end(&inode->v);
|
inode_dio_end(&inode->v);
|
||||||
|
Loading…
Reference in New Issue
Block a user