Messages in this thread | | | Date | Wed, 21 Aug 2013 15:44:42 +0100 | From | Mark Brown <> | Subject | Re: [PATCH] drivers: regmap: bugfix in regcache-rbtree.c |
| |
On Wed, Aug 21, 2013 at 04:21:43PM +0200, David Jander wrote:
> I hope you can explain to me how regcache_rbtree_node_alloc() is supposed to > work, because I start to think that something in there is broken... > Specially the code at line 323 strikes me:
> if (!rbnode->blklen) { > rbnode->blklen = sizeof(*rbnode); > rbnode->base_reg = reg; > }
That's intended to avoid creating lots of tiny blocks. I think this bit is actually OK but what should be happening here is that the collision gets noticed when we try to insert the block and we at least constrain the size of the new block if not merge it with the old one immediately after (which is obvioulsy better).
As a bug fix setting blklen to be a single register ought to avoid triggering problems though it will be less efficient - does that work for you? Doing the merging is going to be too much for a fix. [unhandled content-type:application/pgp-signature] | |