Messages in this thread | | | Date | Tue, 15 May 2018 15:04:46 +0300 | From | Dan Carpenter <> | Subject | Re: [PATCH] staging: bcm2835-camera: Replace open-coded idr with a struct idr. |
| |
On Thu, May 10, 2018 at 04:31:07PM -0700, Eric Anholt wrote: > @@ -258,32 +181,40 @@ get_msg_context(struct vchiq_mmal_instance *instance) > if (!msg_context) > return ERR_PTR(-ENOMEM); > > - msg_context->instance = instance; > - msg_context->handle = > - mmal_context_map_create_handle(&instance->context_map, > - msg_context, > - GFP_KERNEL); > + /* Create an ID that will be passed along with our message so > + * that when we service the VCHI reply, we can look up what > + * message is being replied to. > + */ > + spin_lock(&instance->context_map_lock); > + handle = idr_alloc(&instance->context_map, msg_context, > + 0, 0, GFP_KERNEL); > + spin_unlock(&instance->context_map_lock); > > - if (!msg_context->handle) { > + if (msg_context->handle < 0) {
This should probably be testing:
if (handle < 0) {
> kfree(msg_context); > - return ERR_PTR(-ENOMEM); > + return ERR_PTR(handle); > } > > + msg_context->instance = instance; > + msg_context->handle = handle; > + > return msg_context; > } >
| |