firewire: cdev: simplify a schedule_delayed_work wrapper
authorStefan Richter <stefanr@s5r6.in-berlin.de>
Sun, 11 Jan 2009 12:44:46 +0000 (13:44 +0100)
committerStefan Richter <stefanr@s5r6.in-berlin.de>
Tue, 24 Mar 2009 19:56:46 +0000 (20:56 +0100)
The kernel API documentation says that queue_delayed_work() returns 0
(only) if the work was already queued.  The return codes of
schedule_delayed_work() are not documented but the same.

In init_iso_resource(), the work has never been queued yet, hence we
can assume schedule_delayed_work() to be a guaranteed success there.

Signed-off-by: Stefan Richter <stefanr@s5r6.in-berlin.de>
drivers/firewire/fw-cdev.c

index 257b0c7..214e534 100644 (file)
@@ -129,7 +129,7 @@ struct iso_resource {
        struct iso_resource_event *e_alloc, *e_dealloc;
 };
 
-static int schedule_iso_resource(struct iso_resource *);
+static void schedule_iso_resource(struct iso_resource *);
 static void release_iso_resource(struct client *, struct client_resource *);
 
 /*
@@ -1111,17 +1111,11 @@ static void iso_resource_work(struct work_struct *work)
        client_put(client);
 }
 
-static int schedule_iso_resource(struct iso_resource *r)
+static void schedule_iso_resource(struct iso_resource *r)
 {
-       int scheduled;
-
        client_get(r->client);
-
-       scheduled = schedule_delayed_work(&r->work, 0);
-       if (!scheduled)
+       if (!schedule_delayed_work(&r->work, 0))
                client_put(r->client);
-
-       return scheduled;
 }
 
 static void release_iso_resource(struct client *client,
@@ -1173,13 +1167,13 @@ static int init_iso_resource(struct client *client,
        if (todo == ISO_RES_ALLOC) {
                r->resource.release = release_iso_resource;
                ret = add_client_resource(client, &r->resource, GFP_KERNEL);
+               if (ret < 0)
+                       goto fail;
        } else {
                r->resource.release = NULL;
                r->resource.handle = -1;
-               ret = schedule_iso_resource(r) ? 0 : -ENOMEM;
+               schedule_iso_resource(r);
        }
-       if (ret < 0)
-               goto fail;
        request->handle = r->resource.handle;
 
        return 0;