On 05/04/16 14:05, Chris Wilson wrote:
On Tue, Apr 05, 2016 at 01:57:36PM +0100, Chris Wilson wrote:
I have instances where I want to use drm_malloc_ab() but with a custom
gfp mask. And with those, where I want a temporary allocation, I want to
try a high-order kmalloc() before using a vmalloc().

So refactor my usage into drm_malloc_gfp().

Signed-off-by: Chris Wilson <[email protected]>
Cc: [email protected]
Cc: Ville Syrjälä <[email protected]>
Reviewed-by: Ville Syrjälä <[email protected]>
Acked-by: Dave Airlie <[email protected]>

+static __inline__ void *drm_malloc_gfp(size_t nmemb, size_t size, gfp_t gfp)
+{
+       if (size != 0 && nmemb > SIZE_MAX / size)
+               return NULL;

I know Dave G. has some fancy code to detect when the size parameter is
not constant, but one thing I noticed was that gcc would uninline this
function and we would lose the constant folding. Is there anything we
can do to convince gcc to avoid a div here (other than pure macro)?

Don't know, apart from maybe _always_inline if it is not considered too big.

But I wanted to ask, why it is interesting to allow size == 0 ? Why not:

        if (size == 0 || nmemb > SIZE_MAX / size)
                return NULL;

?

Regards,

Tvrtko
_______________________________________________
Intel-gfx mailing list
[email protected]
https://lists.freedesktop.org/mailman/listinfo/intel-gfx

Reply via email to