Re: [Regression] 2.6.38 ncpfs

From: Bongani Hlope
Date: Fri Apr 15 2011 - 04:20:23 EST


Hi Linus

On Thu, 2011-04-14 at 13:22 -0700, Linus Torvalds wrote:
> On Thu, Apr 14, 2011 at 1:17 PM, Bongani Hlope
<bonganilinux@xxxxxxxxxx> wrote:
> >
> > Looking at the changes, you are right. The BUG_ON() seems to be
what is not
> > suppose to be there. The attached patch only removes the BUG_ON().
I'll test
> > on my work PC tomorrow and see if that also fixes the bug.
>
> You might also try to replace it with
>
> BUG_ON(!mutex_is_locked(&dentry->d_parent->d_inode->i_mutex))
>
> ie add that "d_parent" there. Just for testing - I think the real fix
> really is to remove it, but I'd personally be happier knowing that
> _if_ it were to have that d_parent there, it would have worked.

I've made that change and ncpfs works fine with it. I've attached a
patch that changes the BUG_ON to look at the parent.

>
> It would also be interesting to hear if that name length could
> possibly ever change, and we'd hit that test too. It looks like the
> original code actually checked that the length was the same before
> doing the overwrite.
>
> ncpfs doesn't seem to be very actively maintained, I suspect Petr
> isn't really using it any more.
>
> Linus
>
> Linus
> --
> 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/
>





This e-mail and its attachments, if any, are subject to BankservAfrica's
e-mail disclaimer which is available on
http://www.bankservafrica.com/Contactus/EmailDisclaimer.aspx.

Please consider the environment before printing this e-mail!--- linux-2.6.33/fs/dcache.c.org 2011-04-04 08:20:20.382107296 +0200
+++ linux-2.6.33/fs/dcache.c 2011-04-15 08:23:45.530530995 +0200
@@ -2123,7 +2123,7 @@
*/
void dentry_update_name_case(struct dentry *dentry, struct qstr *name)
{
- BUG_ON(!mutex_is_locked(&dentry->d_inode->i_mutex));
+ BUG_ON(!mutex_is_locked(&dentry->d_parent->d_inode->i_mutex));
BUG_ON(dentry->d_name.len != name->len); /* d_lookup gives this */

spin_lock(&dentry->d_lock);