Re: [PATCH] direct_io: fix use after free in __blockdev_direct_IO

From: Xiaotian Feng
Date: Thu Dec 17 2009 - 04:34:37 EST


On 12/17/2009 05:29 PM, Al Viro wrote:
On Thu, Dec 17, 2009 at 04:49:32PM +0800, Xiaotian Feng wrote:
@@ -1197,7 +1200,11 @@ __blockdev_direct_IO(int rw, struct kiocb *iocb, struct inode *inode,
(end> i_size_read(inode)));

retval = direct_io_worker(rw, iocb, inode, iov, offset,
- nr_segs, blkbits, get_block, end_io, dio);
+ nr_segs, blkbits, get_block, end_io,
+ dio,&dio_freed);
+
+ if (dio_freed)
+ goto out;

Um... I'm not sure that this would be the right fix. How about simple
s/dio->flags/flags/ in the line below?
Yes, dio->flags is not changed in direct_io_worker(), your method is better, thanks.

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/