[PATCH] firewire: cdev: simplify a schedule_delayed_work wrapper

From: Stefan Richter
Date: Sun Jan 11 2009 - 07:45:31 EST


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@xxxxxxxxxxxxxxxxx>
---
drivers/firewire/fw-cdev.c | 18 ++++++------------
1 file changed, 6 insertions(+), 12 deletions(-)

Index: linux/drivers/firewire/fw-cdev.c
===================================================================
--- linux.orig/drivers/firewire/fw-cdev.c
+++ linux/drivers/firewire/fw-cdev.c
@@ -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 wor
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 clie
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;

--
Stefan Richter
-=====-==--= ---= -=-==
http://arcgraph.de/sr/

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/