hc
2024-12-19 9370bb92b2d16684ee45cf24e879c93c509162da
kernel/drivers/base/regmap/regcache-rbtree.c
....@@ -277,7 +277,7 @@
277277
278278 blk = krealloc(rbnode->block,
279279 blklen * map->cache_word_size,
280
- GFP_KERNEL);
280
+ map->alloc_flags);
281281 if (!blk)
282282 return -ENOMEM;
283283
....@@ -286,7 +286,7 @@
286286 if (BITS_TO_LONGS(blklen) > BITS_TO_LONGS(rbnode->blklen)) {
287287 present = krealloc(rbnode->cache_present,
288288 BITS_TO_LONGS(blklen) * sizeof(*present),
289
- GFP_KERNEL);
289
+ map->alloc_flags);
290290 if (!present)
291291 return -ENOMEM;
292292
....@@ -320,7 +320,7 @@
320320 const struct regmap_range *range;
321321 int i;
322322
323
- rbnode = kzalloc(sizeof(*rbnode), GFP_KERNEL);
323
+ rbnode = kzalloc(sizeof(*rbnode), map->alloc_flags);
324324 if (!rbnode)
325325 return NULL;
326326
....@@ -346,13 +346,13 @@
346346 }
347347
348348 rbnode->block = kmalloc_array(rbnode->blklen, map->cache_word_size,
349
- GFP_KERNEL);
349
+ map->alloc_flags);
350350 if (!rbnode->block)
351351 goto err_free;
352352
353353 rbnode->cache_present = kcalloc(BITS_TO_LONGS(rbnode->blklen),
354354 sizeof(*rbnode->cache_present),
355
- GFP_KERNEL);
355
+ map->alloc_flags);
356356 if (!rbnode->cache_present)
357357 goto err_free_block;
358358
....@@ -453,7 +453,8 @@
453453 if (!rbnode)
454454 return -ENOMEM;
455455 regcache_rbtree_set_register(map, rbnode,
456
- reg - rbnode->base_reg, value);
456
+ (reg - rbnode->base_reg) / map->reg_stride,
457
+ value);
457458 regcache_rbtree_insert(map, &rbtree_ctx->root, rbnode);
458459 rbtree_ctx->cached_rbnode = rbnode;
459460 }