Re: [PATCH] Btrfs: fix crash regarding to ulist_add_merge

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



> > But in the krealloc() case the rb_erase() will be trying to reference
> > freed memmory because krealloc() frees the old pointer on success.
> 
> Yeah, I realize that you're absolutely right, but my box
> didn't complain about the abused old pointers when we're not in int_nodes
> case, which is weird...

The freed space probably just hasn't been reused yet.  Have you tried
with CONFIG_DEBUG_PAGEALLOC or CONFIG_DEBUG_SLAB?

> > Yeah, it's insane, but no more so than using krealloc() for an array
> > with internal pointers in the first place.
> 
> I doubt if it can work, I'd prefer the re-insert dance.

It should, but it is a disgusting hack.  Not worth it if you can't get
it going.

Re-initializing the nodes instead of removing them after they're moved
should work.

But really, this is all bonkers.  A ulist implementation that doesn't
require this fixup would be better.  Maybe lose the array and have a
simple list_head and slab of allocated structs.  Reliable first,
performant second, presuming there's data to justify it.

- z
--
To unsubscribe from this list: send the line "unsubscribe linux-btrfs" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html




[Index of Archives]     [Linux Filesystem Development]     [Linux NFS]     [Linux NILFS]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux