On Thu, Mar 31, 2016 at 2:12 PM, nick <xerofoify@gmail.com> wrote:
On 2016-03-31 12:30 PM, Carlo Caione wrote:
On Thu, Mar 31, 2016 at 5:08 PM, Roger H Newell <newell.roger@gmail.com> wrote:
On Thu, Mar 31, 2016 at 12:18 PM, nick <xerofoify@gmail.com> wrote:
On 2016-03-31 08:34 AM, Roger H Newell wrote: In the fs/file_table.c file as from the root directory of your kernel tree change in the function, get_empty_flip change these lines: if (unlikely(error)) { file_free(f); return ERR_PTR(error); } to: if (unlikely(error)) return ERR_PTR(error); and tell me if that fixes your issue. Nick
Seems to have worked, the error is is gone and I can mount the USB device.
That's not a fix, you are leaking f.
Good catch seems: static inline void file_free(struct file *f) { percpu_counter_dec(&nr_files); if (f) call_rcu(&f->f_u.fu_rcuhead, file_free_rcu); } Roger can you tell this and see if it fixes your issue. The file is fs/file_table.c from the root of the kernel directory. Thanks, Nick
I reverted the previous change, and applied the if(f) test in file_free. There are no error messages in dmseg and I can mount the USB device.
On Thu, 31 Mar 2016 14:59:51 -0230, Roger H Newell said:
I reverted the previous change, and applied the if(f) test in file_free. There are no error messages in dmseg and I can mount the USB device.
That's because Nick's patch is *still* wrong, as the *real* problem appears to be a memory corruption issue elsewhere. You don't see it every mount because it only explodes if a new slab needs to be allocated after the memory corruption has happened.
participants (2)
-
Roger H Newell -
Valdis.Kletnieks@vt.edu