Thread (11 messages) 11 messages, 2 authors, 2020-08-19

Re: [PATCH v7 1/3] devres: provide devm_krealloc()

From: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
Date: 2020-08-18 08:40:26
Also in: linux-iio, lkml

On Mon, Aug 17, 2020 at 10:02:05PM +0200, Bartosz Golaszewski wrote:
On Mon, Aug 17, 2020 at 7:43 PM Andy Shevchenko
[off-list ref] wrote:
quoted
On Mon, Aug 17, 2020 at 07:05:33PM +0200, Bartosz Golaszewski wrote:
quoted
From: Bartosz Golaszewski <redacted>
...
quoted
quoted
+static struct devres *to_devres(void *data)
+{
+     return (struct devres *)((u8 *)data - ALIGN(sizeof(struct devres),
+                                                 ARCH_KMALLOC_MINALIGN));
Do you really need both explicit castings?
Yeah, we can probably drop the (struct devres *) here.
void * -> u8 * here is also not needed, it is considered byte access IIRC.
quoted
quoted
+}
...
quoted
 - hasn't gone while you run a ksize()?
At some point you need to draw a line. In the end: how do you
guarantee a devres buffer hasn't been freed when you're using it? In
my comment to the previous version of this patch I clarified that we
need to protect all modifications of the devres linked list - we must
not realloc a chunk that contains the links without taking the
spinlock but also we must not call alloc() funcs with GFP_KERNEL with
spinlock taken. The issue we could run into is: someone modifies the
linked list by adding/removing other managed resources, not modifying
this one.

The way this function works now guarantees it but other than that:
it's up to the users to not free memory they're actively using.
Thanks for clarification. I agree.

-- 
With Best Regards,
Andy Shevchenko



_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help