From: Tejun Heo <tj@kernel.org> To: laijs@cn.fujitsu.com Cc: linux-kernel@vger.kernel.org, Tejun Heo <tj@kernel.org>, Geoff Levand <geoff@infradead.org>, linuxppc-dev@lists.ozlabs.org, cbe-oss-dev@lists.ozlabs.org Subject: [PATCH 2/9] ps3-vuart: don't use PREPARE_WORK Date: Thu, 20 Feb 2014 15:44:24 -0500 [thread overview] Message-ID: <1392929071-16555-3-git-send-email-tj@kernel.org> (raw) In-Reply-To: <1392929071-16555-1-git-send-email-tj@kernel.org> PREPARE_[DELAYED_]WORK() are being phased out. They have few users and a nasty surprise in terms of reentrancy guarantee as workqueue considers work items to be different if they don't have the same work function. ps3_vuart wasn't overriding the work item with multiple work functions but was using NULL for INIT_WORK() and then single PREPARE_WORK() to set the work function. We can simply invoke INIT_WORK() with the work function and remove the PREPARE_WORK() usage. Not tested at all. It would probably be best to route this with other related updates through the workqueue tree. Signed-off-by: Tejun Heo <tj@kernel.org> Cc: Geoff Levand <geoff@infradead.org> Cc: linuxppc-dev@lists.ozlabs.org Cc: cbe-oss-dev@lists.ozlabs.org --- drivers/ps3/ps3-vuart.c | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/drivers/ps3/ps3-vuart.c b/drivers/ps3/ps3-vuart.c index fb73008..bc1e513 100644 --- a/drivers/ps3/ps3-vuart.c +++ b/drivers/ps3/ps3-vuart.c @@ -699,8 +699,6 @@ int ps3_vuart_read_async(struct ps3_system_bus_device *dev, unsigned int bytes) BUG_ON(!bytes); - PREPARE_WORK(&priv->rx_list.work.work, ps3_vuart_work); - spin_lock_irqsave(&priv->rx_list.lock, flags); if (priv->rx_list.bytes_held >= bytes) { dev_dbg(&dev->core, "%s:%d: schedule_work %xh bytes\n", @@ -1052,7 +1050,7 @@ static int ps3_vuart_probe(struct ps3_system_bus_device *dev) INIT_LIST_HEAD(&priv->rx_list.head); spin_lock_init(&priv->rx_list.lock); - INIT_WORK(&priv->rx_list.work.work, NULL); + INIT_WORK(&priv->rx_list.work.work, ps3_vuart_work); priv->rx_list.work.trigger = 0; priv->rx_list.work.dev = dev; -- 1.8.5.3
WARNING: multiple messages have this Message-ID (diff)
From: Tejun Heo <tj@kernel.org> To: laijs@cn.fujitsu.com Cc: Tejun Heo <tj@kernel.org>, Geoff Levand <geoff@infradead.org>, cbe-oss-dev@lists.ozlabs.org, linuxppc-dev@lists.ozlabs.org, linux-kernel@vger.kernel.org Subject: [PATCH 2/9] ps3-vuart: don't use PREPARE_WORK Date: Thu, 20 Feb 2014 15:44:24 -0500 [thread overview] Message-ID: <1392929071-16555-3-git-send-email-tj@kernel.org> (raw) In-Reply-To: <1392929071-16555-1-git-send-email-tj@kernel.org> PREPARE_[DELAYED_]WORK() are being phased out. They have few users and a nasty surprise in terms of reentrancy guarantee as workqueue considers work items to be different if they don't have the same work function. ps3_vuart wasn't overriding the work item with multiple work functions but was using NULL for INIT_WORK() and then single PREPARE_WORK() to set the work function. We can simply invoke INIT_WORK() with the work function and remove the PREPARE_WORK() usage. Not tested at all. It would probably be best to route this with other related updates through the workqueue tree. Signed-off-by: Tejun Heo <tj@kernel.org> Cc: Geoff Levand <geoff@infradead.org> Cc: linuxppc-dev@lists.ozlabs.org Cc: cbe-oss-dev@lists.ozlabs.org --- drivers/ps3/ps3-vuart.c | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/drivers/ps3/ps3-vuart.c b/drivers/ps3/ps3-vuart.c index fb73008..bc1e513 100644 --- a/drivers/ps3/ps3-vuart.c +++ b/drivers/ps3/ps3-vuart.c @@ -699,8 +699,6 @@ int ps3_vuart_read_async(struct ps3_system_bus_device *dev, unsigned int bytes) BUG_ON(!bytes); - PREPARE_WORK(&priv->rx_list.work.work, ps3_vuart_work); - spin_lock_irqsave(&priv->rx_list.lock, flags); if (priv->rx_list.bytes_held >= bytes) { dev_dbg(&dev->core, "%s:%d: schedule_work %xh bytes\n", @@ -1052,7 +1050,7 @@ static int ps3_vuart_probe(struct ps3_system_bus_device *dev) INIT_LIST_HEAD(&priv->rx_list.head); spin_lock_init(&priv->rx_list.lock); - INIT_WORK(&priv->rx_list.work.work, NULL); + INIT_WORK(&priv->rx_list.work.work, ps3_vuart_work); priv->rx_list.work.trigger = 0; priv->rx_list.work.dev = dev; -- 1.8.5.3
next prev parent reply other threads:[~2014-02-20 20:47 UTC|newest] Thread overview: 75+ messages / expand[flat|nested] mbox.gz Atom feed top 2014-02-20 20:44 [PATCHSET wq/for-3.15] workqueue: remove PREPARE_[DELAYED_]WORK() Tejun Heo 2014-02-20 20:44 ` [PATCH 1/9] wireless/rt2x00: don't use PREPARE_WORK in rt2800usb.c Tejun Heo 2014-03-07 15:26 ` Tejun Heo 2014-02-20 20:44 ` Tejun Heo [this message] 2014-02-20 20:44 ` [PATCH 2/9] ps3-vuart: don't use PREPARE_WORK Tejun Heo 2014-02-21 23:19 ` Geoff Levand 2014-02-21 23:19 ` Geoff Levand 2014-02-20 20:44 ` [PATCH 3/9] floppy: don't use PREPARE_[DELAYED_]WORK Tejun Heo 2014-02-21 9:37 ` Jiri Kosina 2014-02-20 20:44 ` [PATCH 4/9] firewire: don't use PREPARE_DELAYED_WORK Tejun Heo 2014-02-20 20:44 ` Tejun Heo 2014-02-21 1:44 ` Peter Hurley 2014-02-21 1:59 ` Tejun Heo 2014-02-21 2:07 ` Peter Hurley 2014-02-21 2:07 ` Peter Hurley 2014-02-21 2:13 ` Tejun Heo 2014-02-21 5:13 ` Peter Hurley 2014-02-21 10:03 ` Tejun Heo 2014-02-21 12:51 ` Peter Hurley 2014-02-21 12:51 ` Peter Hurley 2014-02-21 13:06 ` Tejun Heo 2014-02-21 16:53 ` Peter Hurley 2014-02-21 16:57 ` Tejun Heo 2014-02-21 23:01 ` Peter Hurley 2014-02-21 23:18 ` Tejun Heo 2014-02-21 23:46 ` Peter Hurley 2014-02-22 14:38 ` Tejun Heo 2014-02-22 14:38 ` Tejun Heo 2014-02-22 14:48 ` Peter Hurley 2014-02-22 18:43 ` James Bottomley 2014-02-22 18:48 ` Peter Hurley 2014-02-22 18:48 ` Peter Hurley 2014-02-22 18:52 ` James Bottomley 2014-02-22 19:03 ` Peter Hurley 2014-02-22 19:03 ` Peter Hurley 2014-02-23 1:23 ` memory-barriers.txt again (was Re: [PATCH 4/9] firewire: don't use PREPARE_DELAYED_WORK) Stefan Richter 2014-02-23 16:37 ` Paul E. McKenney 2014-02-23 16:37 ` Paul E. McKenney 2014-02-23 20:35 ` Peter Hurley 2014-02-23 23:50 ` Paul E. McKenney 2014-02-24 0:09 ` Peter Hurley 2014-02-24 16:26 ` Paul E. McKenney 2014-02-24 16:26 ` Paul E. McKenney 2014-02-24 0:32 ` Stefan Richter 2014-02-24 16:27 ` Paul E. McKenney 2014-02-23 20:05 ` [PATCH 4/9] firewire: don't use PREPARE_DELAYED_WORK James Bottomley 2014-02-23 22:32 ` Peter Hurley 2014-02-21 20:45 ` Stefan Richter 2014-02-21 20:45 ` Stefan Richter 2014-03-05 21:34 ` Stefan Richter 2014-03-07 15:18 ` Tejun Heo 2014-03-07 15:26 ` [PATCH UPDATED " Tejun Heo 2014-03-07 15:26 ` Tejun Heo 2014-02-20 20:44 ` [PATCH 5/9] usb: " Tejun Heo 2014-02-20 20:59 ` Greg Kroah-Hartman 2014-02-21 15:06 ` Alan Stern 2014-02-21 15:07 ` Tejun Heo 2014-02-22 14:59 ` [PATCH v2 " Tejun Heo 2014-02-22 15:14 ` Alan Stern 2014-02-22 15:20 ` Peter Hurley 2014-02-22 15:37 ` Tejun Heo 2014-02-22 23:03 ` Alan Stern 2014-02-23 4:29 ` Tejun Heo 2014-02-20 20:44 ` [PATCH 6/9] nvme: don't use PREPARE_WORK Tejun Heo 2014-02-20 20:44 ` Tejun Heo 2014-03-07 15:26 ` Tejun Heo 2014-03-07 15:26 ` Tejun Heo 2014-02-20 20:44 ` [PATCH 7/9] afs: " Tejun Heo 2014-03-07 15:27 ` Tejun Heo 2014-02-20 20:44 ` [PATCH 8/9] staging/fwserial: " Tejun Heo 2014-02-21 15:13 ` Peter Hurley 2014-02-20 20:44 ` [PATCH 9/9] workqueue: remove PREPARE_[DELAYED_]WORK() Tejun Heo 2014-03-07 15:27 ` Tejun Heo 2014-02-20 22:00 ` [PATCH 7/9] afs: don't use PREPARE_WORK David Howells 2014-02-20 22:46 ` Tejun Heo
Reply instructions: You may reply publicly to this message via plain-text email using any one of the following methods: * Save the following mbox file, import it into your mail client, and reply-to-all from there: mbox Avoid top-posting and favor interleaved quoting: https://en.wikipedia.org/wiki/Posting_style#Interleaved_style * Reply using the --to, --cc, and --in-reply-to switches of git-send-email(1): git send-email \ --in-reply-to=1392929071-16555-3-git-send-email-tj@kernel.org \ --to=tj@kernel.org \ --cc=cbe-oss-dev@lists.ozlabs.org \ --cc=geoff@infradead.org \ --cc=laijs@cn.fujitsu.com \ --cc=linux-kernel@vger.kernel.org \ --cc=linuxppc-dev@lists.ozlabs.org \ /path/to/YOUR_REPLY https://kernel.org/pub/software/scm/git/docs/git-send-email.html * If your mail client supports setting the In-Reply-To header via mailto: links, try the mailto: linkBe sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.