Skip to content

Commit

Permalink
firewire: Only set client->iso_context if allocation was successful.
Browse files Browse the repository at this point in the history
This patch fixes an OOPS on cdev release for an fd where iso context
creation failed.

Signed-off-by: Kristian Høgsberg <krh@redhat.com>
Signed-off-by: Stefan Richter <stefanr@s5r6.in-berlin.de>
  • Loading branch information
Kristian Høgsberg authored and Stefan Richter committed Jun 20, 2007
1 parent 18b4617 commit 24315c5
Showing 1 changed file with 11 additions and 8 deletions.
19 changes: 11 additions & 8 deletions drivers/firewire/fw-cdev.c
Original file line number Diff line number Diff line change
Expand Up @@ -640,6 +640,7 @@ iso_callback(struct fw_iso_context *context, u32 cycle,
static int ioctl_create_iso_context(struct client *client, void *buffer)
{
struct fw_cdev_create_iso_context *request = buffer;
struct fw_iso_context *context;

if (request->channel > 63)
return -EINVAL;
Expand All @@ -661,15 +662,17 @@ static int ioctl_create_iso_context(struct client *client, void *buffer)
return -EINVAL;
}

context = fw_iso_context_create(client->device->card,
request->type,
request->channel,
request->speed,
request->header_size,
iso_callback, client);
if (IS_ERR(context))
return PTR_ERR(context);

client->iso_closure = request->closure;
client->iso_context = fw_iso_context_create(client->device->card,
request->type,
request->channel,
request->speed,
request->header_size,
iso_callback, client);
if (IS_ERR(client->iso_context))
return PTR_ERR(client->iso_context);
client->iso_context = context;

/* We only support one context at this time. */
request->handle = 0;
Expand Down

0 comments on commit 24315c5

Please sign in to comment.