Re: [f2fs-dev] [PATCH v3] f2fs: fix potential .flags overflow on 32bit architecture

2020-03-22 Thread Chao Yu
On 2020/3/23 10:00, Joe Perches wrote: > On Mon, 2020-03-23 at 09:25 +0800, Chao Yu wrote: >> f2fs_inode_info.flags is unsigned long variable, it has 32 bits >> in 32bit architecture, since we introduced FI_MMAP_FILE flag >> when we support data compression, we may access memory cross >> the border

Re: [f2fs-dev] [PATCH v3] f2fs: fix potential .flags overflow on 32bit architecture

2020-03-22 Thread Chao Yu
Hello Ondřej, On 2020/3/23 9:50, Ondřej Jirman wrote: > Hello Chao Yu, > > On Mon, Mar 23, 2020 at 09:25:19AM +0800, Chao Yu wrote: >> [snip] >> >> +static inline void __set_inode_flag(struct inode *inode, int flag) >> +{ >> +test_and_set_bit(flag % BITS_PER_LONG, >> +&F

Re: [f2fs-dev] [PATCH v3] f2fs: fix potential .flags overflow on 32bit architecture

2020-03-22 Thread Joe Perches
On Mon, 2020-03-23 at 09:25 +0800, Chao Yu wrote: > f2fs_inode_info.flags is unsigned long variable, it has 32 bits > in 32bit architecture, since we introduced FI_MMAP_FILE flag > when we support data compression, we may access memory cross > the border of .flags field, corrupting .i_sem field, re

Re: [f2fs-dev] [PATCH v3] f2fs: fix potential .flags overflow on 32bit architecture

2020-03-22 Thread Ondřej Jirman
Hello Chao Yu, On Mon, Mar 23, 2020 at 09:25:19AM +0800, Chao Yu wrote: > [snip] > > +static inline void __set_inode_flag(struct inode *inode, int flag) > +{ > + test_and_set_bit(flag % BITS_PER_LONG, > + &F2FS_I(inode)->flags[BIT_WORD(flag)]); This can simply be: t

[f2fs-dev] [PATCH v3] f2fs: fix potential .flags overflow on 32bit architecture

2020-03-22 Thread Chao Yu
f2fs_inode_info.flags is unsigned long variable, it has 32 bits in 32bit architecture, since we introduced FI_MMAP_FILE flag when we support data compression, we may access memory cross the border of .flags field, corrupting .i_sem field, result in below deadlock. To fix this issue, let's expand .