Hello Giorgio, On 8/20/20 2:18 PM, Giorgio Dal Molin wrote: > Hi, > > I've tried the current barebox v2020.08.0 on my imx7d module and it crashes > while executing the command: > > imx7d: / cp /mnt/boot/kernel.img /dev/mmc1.fw_update > unable to handle NULL pointer dereference at address 0x00000000 > pc : [<ffe6c2dc>] lr : [<ffe6c2c0>] > sp : fffefcd0 ip : fffefcd0 fp : c00f8850 > r10: ffe981ef r9 : 00000000 r8 : ffe981ef > r7 : ffe98dcb r6 : ffea60a8 r5 : ffe98dbd r4 : c00ef1e8 > r3 : 00000000 r2 : bfefb8e0 r1 : ffe98dbd r0 : 00028888 > Flags: nZCv IRQs off FIQs off Mode SVC_32 > > no stack data available > > > I could track the problem down to a call to list_del(&inode->i_sb_list); in > fs/fs.c:iput(struct inode *inode): > > void iput(struct inode *inode) > { > if (!inode) > return; > > inode->i_count--; > > if (!inode->i_count) { > list_del(&inode->i_sb_list); <== this call segfaults > destroy_inode(inode); > } > } > > I've checked that the struct list_head inode->i_sb_list has its .prev pointer NULL > and that's the immediate reason why I get a segfault (at WRITE_ONCE(prev->next, next) > in __list_del(prev, next); what I don't know is whether a NULL .prev is OK and the error > is a missing test in __list_del() or if a NULL .prev is already wrong. What kind of file system is mounted at /mnt/boot? > > giorgio > > _______________________________________________ > barebox mailing list > barebox@xxxxxxxxxxxxxxxxxxx > http://lists.infradead.org/mailman/listinfo/barebox > -- Pengutronix e.K. | | Steuerwalder Str. 21 | http://www.pengutronix.de/ | 31137 Hildesheim, Germany | Phone: +49-5121-206917-0 | Amtsgericht Hildesheim, HRA 2686 | Fax: +49-5121-206917-5555 | _______________________________________________ barebox mailing list barebox@xxxxxxxxxxxxxxxxxxx http://lists.infradead.org/mailman/listinfo/barebox