From: Andi Kleen <andi@firstfloor.org>
To: speck@linutronix.de
Cc: Andi Kleen <ak@linux.intel.com>
Subject: [MODERATED] [PATCH v6 43/43] MDSv6
Date: Sun, 24 Feb 2019 07:07:49 -0800 [thread overview]
Message-ID: <f4debb8df0411abde80d20f400d862c7cc0c8ad2.1551019522.git.ak@linux.intel.com> (raw)
In-Reply-To: <cover.1551019522.git.ak@linux.intel.com>
In-Reply-To: <cover.1551019522.git.ak@linux.intel.com>
Mark tasklets that touch user data based on an audit.
This was a conservative audit, either the tasklets clearly
touched user data, or were too complicated and for slow
devices.
Some other tasklets that also touch user data have not
been marked, instead those rely on hooks in commonly
called functions
Changes done with the appended cocci.script, and sed
for DECLARE_TASKLET
// SPDX-License-Identifier: GPL-2.0
@@
expression a, b, c;
@@
- tasklet_init(a, b, c)
+ tasklet_init_flags(a, b, c, TASKLET_USER_DATA)
@@
expression a, b, c, d;
@@
- tasklet_hrtimer_init(a, b, c, d)
+ tasklet_hrtimer_init(a, b, c, d | HRTIMER_MODE_USER_DATA)
Signed-off-by: Andi Kleen <ak@linux.intel.com>
---
drivers/atm/eni.c | 3 ++-
drivers/atm/he.c | 3 ++-
drivers/block/xsysace.c | 3 ++-
drivers/crypto/ixp4xx_crypto.c | 3 ++-
drivers/crypto/qat/qat_common/adf_isr.c | 7 ++++---
drivers/crypto/qat/qat_common/adf_sriov.c | 6 +++---
drivers/crypto/qat/qat_common/adf_vf_isr.c | 10 ++++++----
drivers/dma/dw/core.c | 3 ++-
drivers/dma/ioat/init.c | 3 ++-
drivers/dma/virt-dma.c | 3 ++-
drivers/gpu/drm/i915/intel_lrc.c | 5 +++--
drivers/hv/channel_mgmt.c | 4 ++--
drivers/hv/hv.c | 4 ++--
drivers/infiniband/hw/bnxt_re/qplib_fp.c | 4 ++--
drivers/infiniband/hw/bnxt_re/qplib_rcfw.c | 4 ++--
drivers/infiniband/hw/i40iw/i40iw_main.c | 9 ++++++---
drivers/infiniband/hw/qib/qib_sdma.c | 4 ++--
drivers/infiniband/sw/rxe/rxe_cq.c | 3 ++-
drivers/input/serio/hil_mlc.c | 2 +-
drivers/isdn/gigaset/bas-gigaset.c | 8 ++++----
drivers/isdn/gigaset/common.c | 4 ++--
drivers/isdn/gigaset/ser-gigaset.c | 4 ++--
drivers/isdn/gigaset/usb-gigaset.c | 4 ++--
drivers/media/pci/bt8xx/dvb-bt8xx.c | 3 ++-
drivers/media/pci/mantis/mantis_dvb.c | 3 ++-
drivers/media/pci/smipcie/smipcie-main.c | 3 ++-
drivers/media/pci/ttpci/av7110.c | 12 +++++++----
drivers/media/pci/ttpci/budget-ci.c | 9 ++++++---
drivers/media/pci/ttpci/budget-core.c | 3 ++-
drivers/media/pci/tw5864/tw5864-video.c | 4 ++--
.../media/platform/marvell-ccic/mcam-core.c | 4 ++--
drivers/media/radio/wl128x/fmdrv_common.c | 6 ++++--
drivers/media/usb/ttusb-dec/ttusb_dec.c | 5 +++--
drivers/memstick/host/jmb38x_ms.c | 3 ++-
drivers/misc/vmw_vmci/vmci_guest.c | 8 ++++----
drivers/mmc/host/wbsd.c | 20 +++++++++----------
drivers/net/ethernet/broadcom/cnic.c | 8 ++++----
drivers/net/ethernet/cadence/macb_main.c | 4 ++--
drivers/net/ethernet/micrel/ks8842.c | 7 ++++---
drivers/net/ppp/ppp_async.c | 3 ++-
drivers/net/ppp/ppp_synctty.c | 3 ++-
drivers/net/usb/cdc_ncm.c | 3 ++-
drivers/net/usb/hso.c | 6 +++---
drivers/net/wan/farsync.c | 4 ++--
drivers/net/wireless/ath/carl9170/usb.c | 4 ++--
.../net/wireless/broadcom/b43legacy/main.c | 6 +++---
drivers/net/wireless/broadcom/b43legacy/pio.c | 4 ++--
drivers/net/wireless/intel/ipw2x00/ipw2100.c | 5 +++--
drivers/net/wireless/intel/ipw2x00/ipw2200.c | 5 +++--
.../net/wireless/intel/iwlegacy/3945-mac.c | 6 +++---
.../net/wireless/intel/iwlegacy/4965-mac.c | 6 +++---
drivers/net/wireless/intersil/orinoco/main.c | 4 ++--
drivers/net/wireless/mac80211_hwsim.c | 6 +++---
drivers/net/wireless/marvell/mwl8k.c | 6 ++++--
drivers/net/wireless/realtek/rtlwifi/pci.c | 12 +++++------
drivers/scsi/aic94xx/aic94xx_hwi.c | 4 ++--
drivers/staging/ks7010/ks_hostif.c | 3 ++-
.../staging/rtl8188eu/hal/rtl8188eu_recv.c | 6 +++---
.../staging/rtl8188eu/hal/rtl8188eu_xmit.c | 6 +++---
drivers/staging/rtl8192e/rtl8192e/rtl_core.c | 18 ++++++++---------
drivers/staging/rtl8192e/rtllib_softmac.c | 6 +++---
drivers/staging/rtl8712/rtl8712_recv.c | 6 +++---
drivers/staging/rtl8712/rtl871x_xmit.c | 6 +++---
.../staging/rtl8723bs/hal/rtl8723bs_recv.c | 8 +++-----
drivers/tty/ipwireless/hardware.c | 3 ++-
drivers/tty/serial/ifx6x60.c | 4 ++--
drivers/usb/atm/usbatm.c | 6 ++++--
drivers/usb/gadget/function/f_midi.c | 3 ++-
drivers/usb/serial/mos7720.c | 4 ++--
net/atm/pppoatm.c | 2 +-
net/mac80211/main.c | 14 ++++++-------
net/rds/ib_cm.c | 8 ++++----
net/xfrm/xfrm_state.c | 3 ++-
sound/core/timer.c | 4 ++--
sound/pci/asihpi/asihpi.c | 4 ++--
sound/pci/rme9652/hdsp.c | 3 ++-
sound/pci/rme9652/hdspm.c | 4 ++--
sound/usb/midi.c | 3 ++-
sound/usb/misc/ua101.c | 4 ++--
79 files changed, 232 insertions(+), 188 deletions(-)
diff --git a/drivers/atm/eni.c b/drivers/atm/eni.c
index f8c703426c90..bc6e792ac677 100644
--- a/drivers/atm/eni.c
+++ b/drivers/atm/eni.c
@@ -1841,7 +1841,8 @@ static int eni_start(struct atm_dev *dev)
eni_dev->vci,eni_dev->rx_dma,eni_dev->tx_dma,
eni_dev->service,buf);
spin_lock_init(&eni_dev->lock);
- tasklet_init(&eni_dev->task,eni_tasklet,(unsigned long) dev);
+ tasklet_init_flags(&eni_dev->task, eni_tasklet, (unsigned long)dev,
+ TASKLET_USER_DATA);
eni_dev->events = 0;
/* initialize memory management */
buffer_mem = eni_dev->mem - (buf - eni_dev->ram);
diff --git a/drivers/atm/he.c b/drivers/atm/he.c
index 211607986134..36f5d53ac41c 100644
--- a/drivers/atm/he.c
+++ b/drivers/atm/he.c
@@ -383,7 +383,8 @@ static int he_init_one(struct pci_dev *pci_dev,
he_dev->atm_dev->dev_data = he_dev;
atm_dev->dev_data = he_dev;
he_dev->number = atm_dev->number;
- tasklet_init(&he_dev->tasklet, he_tasklet, (unsigned long) he_dev);
+ tasklet_init_flags(&he_dev->tasklet, he_tasklet,
+ (unsigned long)he_dev, TASKLET_USER_DATA);
spin_lock_init(&he_dev->global_lock);
if (he_start(atm_dev)) {
diff --git a/drivers/block/xsysace.c b/drivers/block/xsysace.c
index a6b3aa5bbb82..b5dd8d49920f 100644
--- a/drivers/block/xsysace.c
+++ b/drivers/block/xsysace.c
@@ -1004,7 +1004,8 @@ static int ace_setup(struct ace_device *ace)
/*
* Initialize the state machine tasklet and stall timer
*/
- tasklet_init(&ace->fsm_tasklet, ace_fsm_tasklet, (unsigned long)ace);
+ tasklet_init_flags(&ace->fsm_tasklet, ace_fsm_tasklet,
+ (unsigned long)ace, TASKLET_USER_DATA);
timer_setup(&ace->stall_timer, ace_stall_timer, TIMER_USER_DATA);
/*
diff --git a/drivers/crypto/ixp4xx_crypto.c b/drivers/crypto/ixp4xx_crypto.c
index 1b0d156bb9be..142562b2dee2 100644
--- a/drivers/crypto/ixp4xx_crypto.c
+++ b/drivers/crypto/ixp4xx_crypto.c
@@ -499,7 +499,8 @@ static int init_ixp_crypto(struct device *dev)
goto err;
}
qmgr_set_irq(RECV_QID, QUEUE_IRQ_SRC_NOT_EMPTY, irqhandler, NULL);
- tasklet_init(&crypto_done_tasklet, crypto_done_action, 0);
+ tasklet_init_flags(&crypto_done_tasklet, crypto_done_action, 0,
+ TASKLET_USER_DATA);
qmgr_enable_irq(RECV_QID);
return 0;
diff --git a/drivers/crypto/qat/qat_common/adf_isr.c b/drivers/crypto/qat/qat_common/adf_isr.c
index cd1cdf5305bc..23c053fb0d67 100644
--- a/drivers/crypto/qat/qat_common/adf_isr.c
+++ b/drivers/crypto/qat/qat_common/adf_isr.c
@@ -283,9 +283,10 @@ static int adf_setup_bh(struct adf_accel_dev *accel_dev)
int i;
for (i = 0; i < hw_data->num_banks; i++)
- tasklet_init(&priv_data->banks[i].resp_handler,
- adf_response_handler,
- (unsigned long)&priv_data->banks[i]);
+ tasklet_init_flags(&priv_data->banks[i].resp_handler,
+ adf_response_handler,
+ (unsigned long)&priv_data->banks[i],
+ TASKLET_USER_DATA);
return 0;
}
diff --git a/drivers/crypto/qat/qat_common/adf_sriov.c b/drivers/crypto/qat/qat_common/adf_sriov.c
index b36d8653b1ba..e9d188baffee 100644
--- a/drivers/crypto/qat/qat_common/adf_sriov.c
+++ b/drivers/crypto/qat/qat_common/adf_sriov.c
@@ -125,9 +125,9 @@ static int adf_enable_sriov(struct adf_accel_dev *accel_dev)
vf_info->accel_dev = accel_dev;
vf_info->vf_nr = i;
- tasklet_init(&vf_info->vf2pf_bh_tasklet,
- (void *)adf_vf2pf_bh_handler,
- (unsigned long)vf_info);
+ tasklet_init_flags(&vf_info->vf2pf_bh_tasklet,
+ (void *)adf_vf2pf_bh_handler,
+ (unsigned long)vf_info, TASKLET_USER_DATA);
mutex_init(&vf_info->pf2vf_lock);
ratelimit_state_init(&vf_info->vf2pf_ratelimit,
DEFAULT_RATELIMIT_INTERVAL,
diff --git a/drivers/crypto/qat/qat_common/adf_vf_isr.c b/drivers/crypto/qat/qat_common/adf_vf_isr.c
index 4a73fc70f7a9..ee92578c51a9 100644
--- a/drivers/crypto/qat/qat_common/adf_vf_isr.c
+++ b/drivers/crypto/qat/qat_common/adf_vf_isr.c
@@ -182,8 +182,9 @@ static void adf_pf2vf_bh_handler(void *data)
static int adf_setup_pf2vf_bh(struct adf_accel_dev *accel_dev)
{
- tasklet_init(&accel_dev->vf.pf2vf_bh_tasklet,
- (void *)adf_pf2vf_bh_handler, (unsigned long)accel_dev);
+ tasklet_init_flags(&accel_dev->vf.pf2vf_bh_tasklet,
+ (void *)adf_pf2vf_bh_handler,
+ (unsigned long)accel_dev, TASKLET_USER_DATA);
mutex_init(&accel_dev->vf.vf2pf_lock);
return 0;
@@ -259,8 +260,9 @@ static int adf_setup_bh(struct adf_accel_dev *accel_dev)
{
struct adf_etr_data *priv_data = accel_dev->transport;
- tasklet_init(&priv_data->banks[0].resp_handler, adf_response_handler,
- (unsigned long)priv_data->banks);
+ tasklet_init_flags(&priv_data->banks[0].resp_handler,
+ adf_response_handler,
+ (unsigned long)priv_data->banks, TASKLET_USER_DATA);
return 0;
}
diff --git a/drivers/dma/dw/core.c b/drivers/dma/dw/core.c
index dc053e62f894..c5ff06c87592 100644
--- a/drivers/dma/dw/core.c
+++ b/drivers/dma/dw/core.c
@@ -1271,7 +1271,8 @@ int dw_dma_probe(struct dw_dma_chip *chip)
goto err_pdata;
}
- tasklet_init(&dw->tasklet, dw_dma_tasklet, (unsigned long)dw);
+ tasklet_init_flags(&dw->tasklet, dw_dma_tasklet, (unsigned long)dw,
+ TASKLET_USER_DATA);
err = request_irq(chip->irq, dw_dma_interrupt, IRQF_SHARED,
dw->name, dw);
diff --git a/drivers/dma/ioat/init.c b/drivers/dma/ioat/init.c
index 2d810dfcdc48..72fa81a88f39 100644
--- a/drivers/dma/ioat/init.c
+++ b/drivers/dma/ioat/init.c
@@ -760,7 +760,8 @@ ioat_init_channel(struct ioatdma_device *ioat_dma,
list_add_tail(&ioat_chan->dma_chan.device_node, &dma->channels);
ioat_dma->idx[idx] = ioat_chan;
timer_setup(&ioat_chan->timer, ioat_timer_event, 0);
- tasklet_init(&ioat_chan->cleanup_task, ioat_cleanup_event, data);
+ tasklet_init_flags(&ioat_chan->cleanup_task, ioat_cleanup_event, data,
+ TASKLET_USER_DATA);
}
#define IOAT_NUM_SRC_TEST 6 /* must be <= 8 */
diff --git a/drivers/dma/virt-dma.c b/drivers/dma/virt-dma.c
index 88ad8ed2a8d6..c3bf2fd20ca2 100644
--- a/drivers/dma/virt-dma.c
+++ b/drivers/dma/virt-dma.c
@@ -139,7 +139,8 @@ void vchan_init(struct virt_dma_chan *vc, struct dma_device *dmadev)
INIT_LIST_HEAD(&vc->desc_issued);
INIT_LIST_HEAD(&vc->desc_completed);
- tasklet_init(&vc->task, vchan_complete, (unsigned long)vc);
+ tasklet_init_flags(&vc->task, vchan_complete, (unsigned long)vc,
+ TASKLET_USER_DATA);
vc->chan.device = dmadev;
list_add_tail(&vc->chan.device_node, &dmadev->channels);
diff --git a/drivers/gpu/drm/i915/intel_lrc.c b/drivers/gpu/drm/i915/intel_lrc.c
index eab9341a5152..61466f7877e1 100644
--- a/drivers/gpu/drm/i915/intel_lrc.c
+++ b/drivers/gpu/drm/i915/intel_lrc.c
@@ -2231,8 +2231,9 @@ logical_ring_setup(struct intel_engine_cs *engine)
/* Intentionally left blank. */
engine->buffer = NULL;
- tasklet_init(&engine->execlists.tasklet,
- execlists_submission_tasklet, (unsigned long)engine);
+ tasklet_init_flags(&engine->execlists.tasklet,
+ execlists_submission_tasklet,
+ (unsigned long)engine, TASKLET_USER_DATA);
logical_ring_default_vfuncs(engine);
logical_ring_default_irqs(engine);
diff --git a/drivers/hv/channel_mgmt.c b/drivers/hv/channel_mgmt.c
index d01689079e9b..d904f0bfc367 100644
--- a/drivers/hv/channel_mgmt.c
+++ b/drivers/hv/channel_mgmt.c
@@ -333,8 +333,8 @@ static struct vmbus_channel *alloc_channel(void)
INIT_LIST_HEAD(&channel->sc_list);
INIT_LIST_HEAD(&channel->percpu_list);
- tasklet_init(&channel->callback_event,
- vmbus_on_event, (unsigned long)channel);
+ tasklet_init_flags(&channel->callback_event, vmbus_on_event,
+ (unsigned long)channel, TASKLET_USER_DATA);
return channel;
}
diff --git a/drivers/hv/hv.c b/drivers/hv/hv.c
index 632d25674e7f..28df050834d1 100644
--- a/drivers/hv/hv.c
+++ b/drivers/hv/hv.c
@@ -209,8 +209,8 @@ int hv_synic_alloc(void)
for_each_present_cpu(cpu) {
hv_cpu = per_cpu_ptr(hv_context.cpu_context, cpu);
- tasklet_init(&hv_cpu->msg_dpc,
- vmbus_on_msg_dpc, (unsigned long) hv_cpu);
+ tasklet_init_flags(&hv_cpu->msg_dpc, vmbus_on_msg_dpc,
+ (unsigned long)hv_cpu, TASKLET_USER_DATA);
hv_cpu->clk_evt = kzalloc(sizeof(struct clock_event_device),
GFP_KERNEL);
diff --git a/drivers/infiniband/hw/bnxt_re/qplib_fp.c b/drivers/infiniband/hw/bnxt_re/qplib_fp.c
index b98b054148cd..d437c3926455 100644
--- a/drivers/infiniband/hw/bnxt_re/qplib_fp.c
+++ b/drivers/infiniband/hw/bnxt_re/qplib_fp.c
@@ -380,8 +380,8 @@ int bnxt_qplib_nq_start_irq(struct bnxt_qplib_nq *nq, int nq_indx,
nq->vector = msix_vector;
if (need_init)
- tasklet_init(&nq->worker, bnxt_qplib_service_nq,
- (unsigned long)nq);
+ tasklet_init_flags(&nq->worker, bnxt_qplib_service_nq,
+ (unsigned long)nq, TASKLET_USER_DATA);
else
tasklet_enable(&nq->worker);
diff --git a/drivers/infiniband/hw/bnxt_re/qplib_rcfw.c b/drivers/infiniband/hw/bnxt_re/qplib_rcfw.c
index 19551aa43850..2e584b626b89 100644
--- a/drivers/infiniband/hw/bnxt_re/qplib_rcfw.c
+++ b/drivers/infiniband/hw/bnxt_re/qplib_rcfw.c
@@ -654,8 +654,8 @@ int bnxt_qplib_rcfw_start_irq(struct bnxt_qplib_rcfw *rcfw, int msix_vector,
rcfw->vector = msix_vector;
if (need_init)
- tasklet_init(&rcfw->worker,
- bnxt_qplib_service_creq, (unsigned long)rcfw);
+ tasklet_init_flags(&rcfw->worker, bnxt_qplib_service_creq,
+ (unsigned long)rcfw, TASKLET_USER_DATA);
else
tasklet_enable(&rcfw->worker);
rc = request_irq(rcfw->vector, bnxt_qplib_creq_irq, 0,
diff --git a/drivers/infiniband/hw/i40iw/i40iw_main.c b/drivers/infiniband/hw/i40iw/i40iw_main.c
index 68095f00d08f..07fcef01a383 100644
--- a/drivers/infiniband/hw/i40iw/i40iw_main.c
+++ b/drivers/infiniband/hw/i40iw/i40iw_main.c
@@ -689,10 +689,12 @@ static enum i40iw_status_code i40iw_configure_ceq_vector(struct i40iw_device *iw
enum i40iw_status_code status;
if (iwdev->msix_shared && !ceq_id) {
- tasklet_init(&iwdev->dpc_tasklet, i40iw_dpc, (unsigned long)iwdev);
+ tasklet_init_flags(&iwdev->dpc_tasklet, i40iw_dpc,
+ (unsigned long)iwdev, TASKLET_USER_DATA);
status = request_irq(msix_vec->irq, i40iw_irq_handler, 0, "AEQCEQ", iwdev);
} else {
- tasklet_init(&iwceq->dpc_tasklet, i40iw_ceq_dpc, (unsigned long)iwceq);
+ tasklet_init_flags(&iwceq->dpc_tasklet, i40iw_ceq_dpc,
+ (unsigned long)iwceq, TASKLET_USER_DATA);
status = request_irq(msix_vec->irq, i40iw_ceq_handler, 0, "CEQ", iwceq);
}
@@ -841,7 +843,8 @@ static enum i40iw_status_code i40iw_configure_aeq_vector(struct i40iw_device *iw
u32 ret = 0;
if (!iwdev->msix_shared) {
- tasklet_init(&iwdev->dpc_tasklet, i40iw_dpc, (unsigned long)iwdev);
+ tasklet_init_flags(&iwdev->dpc_tasklet, i40iw_dpc,
+ (unsigned long)iwdev, TASKLET_USER_DATA);
ret = request_irq(msix_vec->irq, i40iw_irq_handler, 0, "i40iw", iwdev);
}
if (ret) {
diff --git a/drivers/infiniband/hw/qib/qib_sdma.c b/drivers/infiniband/hw/qib/qib_sdma.c
index 3d64081c4819..52a9513f683a 100644
--- a/drivers/infiniband/hw/qib/qib_sdma.c
+++ b/drivers/infiniband/hw/qib/qib_sdma.c
@@ -436,8 +436,8 @@ int qib_setup_sdma(struct qib_pportdata *ppd)
INIT_LIST_HEAD(&ppd->sdma_activelist);
- tasklet_init(&ppd->sdma_sw_clean_up_task, sdma_sw_clean_up_task,
- (unsigned long)ppd);
+ tasklet_init_flags(&ppd->sdma_sw_clean_up_task, sdma_sw_clean_up_task,
+ (unsigned long)ppd, TASKLET_USER_DATA);
ret = dd->f_init_sdma_regs(ppd);
if (ret)
diff --git a/drivers/infiniband/sw/rxe/rxe_cq.c b/drivers/infiniband/sw/rxe/rxe_cq.c
index a57276f2cb84..b8e0ad6cea0f 100644
--- a/drivers/infiniband/sw/rxe/rxe_cq.c
+++ b/drivers/infiniband/sw/rxe/rxe_cq.c
@@ -107,7 +107,8 @@ int rxe_cq_from_init(struct rxe_dev *rxe, struct rxe_cq *cq, int cqe,
cq->is_dying = false;
- tasklet_init(&cq->comp_task, rxe_send_complete, (unsigned long)cq);
+ tasklet_init_flags(&cq->comp_task, rxe_send_complete,
+ (unsigned long)cq, TASKLET_USER_DATA);
spin_lock_init(&cq->cq_lock);
cq->ibcq.cqe = cqe;
diff --git a/drivers/input/serio/hil_mlc.c b/drivers/input/serio/hil_mlc.c
index e1423f7648d6..7760e143568a 100644
--- a/drivers/input/serio/hil_mlc.c
+++ b/drivers/input/serio/hil_mlc.c
@@ -77,7 +77,7 @@ static struct timer_list hil_mlcs_kicker;
static int hil_mlcs_probe;
static void hil_mlcs_process(unsigned long unused);
-static DECLARE_TASKLET_DISABLED(hil_mlcs_tasklet, hil_mlcs_process, 0);
+static DECLARE_TASKLET_USERDATA_DISABLED(hil_mlcs_tasklet, hil_mlcs_process, 0);
/* #define HIL_MLC_DEBUG */
diff --git a/drivers/isdn/gigaset/bas-gigaset.c b/drivers/isdn/gigaset/bas-gigaset.c
index ecdeb89645d0..23ad5c21db4c 100644
--- a/drivers/isdn/gigaset/bas-gigaset.c
+++ b/drivers/isdn/gigaset/bas-gigaset.c
@@ -2146,8 +2146,8 @@ static int gigaset_initbcshw(struct bc_state *bcs)
bcs->hw.bas = NULL;
return -ENOMEM;
}
- tasklet_init(&ubc->sent_tasklet,
- write_iso_tasklet, (unsigned long) bcs);
+ tasklet_init_flags(&ubc->sent_tasklet, write_iso_tasklet,
+ (unsigned long)bcs, TASKLET_USER_DATA);
spin_lock_init(&ubc->isoinlock);
for (i = 0; i < BAS_INURBS; ++i)
@@ -2167,8 +2167,8 @@ static int gigaset_initbcshw(struct bc_state *bcs)
ubc->aborts = 0;
ubc->shared0s = 0;
ubc->stolen0s = 0;
- tasklet_init(&ubc->rcvd_tasklet,
- read_iso_tasklet, (unsigned long) bcs);
+ tasklet_init_flags(&ubc->rcvd_tasklet, read_iso_tasklet,
+ (unsigned long)bcs, TASKLET_USER_DATA);
return 0;
}
diff --git a/drivers/isdn/gigaset/common.c b/drivers/isdn/gigaset/common.c
index 76b5407b5277..8e66e2dac9e7 100644
--- a/drivers/isdn/gigaset/common.c
+++ b/drivers/isdn/gigaset/common.c
@@ -692,8 +692,8 @@ struct cardstate *gigaset_initcs(struct gigaset_driver *drv, int channels,
cs->ev_tail = 0;
cs->ev_head = 0;
- tasklet_init(&cs->event_tasklet, gigaset_handle_event,
- (unsigned long) cs);
+ tasklet_init_flags(&cs->event_tasklet, gigaset_handle_event,
+ (unsigned long)cs, TASKLET_USER_DATA);
tty_port_init(&cs->port);
cs->commands_pending = 0;
cs->cur_at_seq = 0;
diff --git a/drivers/isdn/gigaset/ser-gigaset.c b/drivers/isdn/gigaset/ser-gigaset.c
index ab0b63a4d045..39e2427c5f52 100644
--- a/drivers/isdn/gigaset/ser-gigaset.c
+++ b/drivers/isdn/gigaset/ser-gigaset.c
@@ -403,8 +403,8 @@ static int gigaset_initcshw(struct cardstate *cs)
return rc;
}
- tasklet_init(&cs->write_tasklet,
- gigaset_modem_fill, (unsigned long) cs);
+ tasklet_init_flags(&cs->write_tasklet, gigaset_modem_fill,
+ (unsigned long)cs, TASKLET_USER_DATA);
return 0;
}
diff --git a/drivers/isdn/gigaset/usb-gigaset.c b/drivers/isdn/gigaset/usb-gigaset.c
index eade36dafa34..2b243239bcb8 100644
--- a/drivers/isdn/gigaset/usb-gigaset.c
+++ b/drivers/isdn/gigaset/usb-gigaset.c
@@ -590,8 +590,8 @@ static int gigaset_initcshw(struct cardstate *cs)
ucs->bulk_out_buffer = NULL;
ucs->bulk_out_urb = NULL;
ucs->read_urb = NULL;
- tasklet_init(&cs->write_tasklet,
- gigaset_modem_fill, (unsigned long) cs);
+ tasklet_init_flags(&cs->write_tasklet, gigaset_modem_fill,
+ (unsigned long)cs, TASKLET_USER_DATA);
return 0;
}
diff --git a/drivers/media/pci/bt8xx/dvb-bt8xx.c b/drivers/media/pci/bt8xx/dvb-bt8xx.c
index b46fbe557dd9..71844d7cb4ba 100644
--- a/drivers/media/pci/bt8xx/dvb-bt8xx.c
+++ b/drivers/media/pci/bt8xx/dvb-bt8xx.c
@@ -787,7 +787,8 @@ static int dvb_bt8xx_load_card(struct dvb_bt8xx_card *card, u32 type)
goto err_disconnect_frontend;
}
- tasklet_init(&card->bt->tasklet, dvb_bt8xx_task, (unsigned long) card);
+ tasklet_init_flags(&card->bt->tasklet, dvb_bt8xx_task,
+ (unsigned long)card, TASKLET_USER_DATA);
frontend_init(card, type);
diff --git a/drivers/media/pci/mantis/mantis_dvb.c b/drivers/media/pci/mantis/mantis_dvb.c
index 54dbaa700fa3..30b739da90e5 100644
--- a/drivers/media/pci/mantis/mantis_dvb.c
+++ b/drivers/media/pci/mantis/mantis_dvb.c
@@ -217,7 +217,8 @@ int mantis_dvb_init(struct mantis_pci *mantis)
}
dvb_net_init(&mantis->dvb_adapter, &mantis->dvbnet, &mantis->demux.dmx);
- tasklet_init(&mantis->tasklet, mantis_dma_xfer, (unsigned long) mantis);
+ tasklet_init_flags(&mantis->tasklet, mantis_dma_xfer,
+ (unsigned long)mantis, TASKLET_USER_DATA);
tasklet_disable(&mantis->tasklet);
if (mantis->hwconfig) {
result = config->frontend_init(mantis, mantis->fe);
diff --git a/drivers/media/pci/smipcie/smipcie-main.c b/drivers/media/pci/smipcie/smipcie-main.c
index 4d5ddbcb3514..234758f89eee 100644
--- a/drivers/media/pci/smipcie/smipcie-main.c
+++ b/drivers/media/pci/smipcie/smipcie-main.c
@@ -431,7 +431,8 @@ static int smi_port_init(struct smi_port *port, int dmaChanUsed)
}
smi_port_disableInterrupt(port);
- tasklet_init(&port->tasklet, smi_dma_xfer, (unsigned long)port);
+ tasklet_init_flags(&port->tasklet, smi_dma_xfer, (unsigned long)port,
+ TASKLET_USER_DATA);
tasklet_disable(&port->tasklet);
port->enable = 1;
return 0;
diff --git a/drivers/media/pci/ttpci/av7110.c b/drivers/media/pci/ttpci/av7110.c
index 409defc75c05..62ddcb7c36e4 100644
--- a/drivers/media/pci/ttpci/av7110.c
+++ b/drivers/media/pci/ttpci/av7110.c
@@ -2533,7 +2533,8 @@ static int av7110_attach(struct saa7146_dev* dev,
saa7146_write(dev, NUM_LINE_BYTE3, (TS_HEIGHT << 16) | TS_WIDTH);
saa7146_write(dev, MC2, MASK_04 | MASK_20);
- tasklet_init(&av7110->vpe_tasklet, vpeirq, (unsigned long) av7110);
+ tasklet_init_flags(&av7110->vpe_tasklet, vpeirq,
+ (unsigned long)av7110, TASKLET_USER_DATA);
} else if (budgetpatch) {
spin_lock_init(&av7110->feedlock1);
@@ -2614,7 +2615,8 @@ static int av7110_attach(struct saa7146_dev* dev,
saa7146_write(dev, MC1, (MASK_13 | MASK_29));
/* end of budgetpatch register initialization */
- tasklet_init (&av7110->vpe_tasklet, vpeirq, (unsigned long) av7110);
+ tasklet_init_flags(&av7110->vpe_tasklet, vpeirq,
+ (unsigned long)av7110, TASKLET_USER_DATA);
} else {
saa7146_write(dev, PCI_BT_V1, 0x1c00101f);
saa7146_write(dev, BCS_CTRL, 0x80400040);
@@ -2629,8 +2631,10 @@ static int av7110_attach(struct saa7146_dev* dev,
saa7146_write(dev, GPIO_CTRL, 0x000000);
}
- tasklet_init (&av7110->debi_tasklet, debiirq, (unsigned long) av7110);
- tasklet_init (&av7110->gpio_tasklet, gpioirq, (unsigned long) av7110);
+ tasklet_init_flags(&av7110->debi_tasklet, debiirq,
+ (unsigned long)av7110, TASKLET_USER_DATA);
+ tasklet_init_flags(&av7110->gpio_tasklet, gpioirq,
+ (unsigned long)av7110, TASKLET_USER_DATA);
mutex_init(&av7110->pid_mutex);
diff --git a/drivers/media/pci/ttpci/budget-ci.c b/drivers/media/pci/ttpci/budget-ci.c
index ec8f92540f7c..78e3cbfa312f 100644
--- a/drivers/media/pci/ttpci/budget-ci.c
+++ b/drivers/media/pci/ttpci/budget-ci.c
@@ -243,8 +243,9 @@ static int msp430_ir_init(struct budget_ci *budget_ci)
budget_ci->ir.dev = dev;
- tasklet_init(&budget_ci->ir.msp430_irq_tasklet, msp430_ir_interrupt,
- (unsigned long) budget_ci);
+ tasklet_init_flags(&budget_ci->ir.msp430_irq_tasklet,
+ msp430_ir_interrupt, (unsigned long)budget_ci,
+ TASKLET_USER_DATA);
SAA7146_IER_ENABLE(saa, MASK_06);
saa7146_setgpio(saa, 3, SAA7146_GPIO_IRQHI);
@@ -505,7 +506,9 @@ static int ciintf_init(struct budget_ci *budget_ci)
// Setup CI slot IRQ
if (budget_ci->ci_irq) {
- tasklet_init(&budget_ci->ciintf_irq_tasklet, ciintf_interrupt, (unsigned long) budget_ci);
+ tasklet_init_flags(&budget_ci->ciintf_irq_tasklet,
+ ciintf_interrupt, (unsigned long)budget_ci,
+ TASKLET_USER_DATA);
if (budget_ci->slot_status != SLOTSTATUS_NONE) {
saa7146_setgpio(saa, 0, SAA7146_GPIO_IRQLO);
} else {
diff --git a/drivers/media/pci/ttpci/budget-core.c b/drivers/media/pci/ttpci/budget-core.c
index 35b696bdb2df..9962b1413a9e 100644
--- a/drivers/media/pci/ttpci/budget-core.c
+++ b/drivers/media/pci/ttpci/budget-core.c
@@ -528,7 +528,8 @@ int ttpci_budget_init(struct budget *budget, struct saa7146_dev *dev,
/* upload all */
saa7146_write(dev, GPIO_CTRL, 0x000000);
- tasklet_init(&budget->vpe_tasklet, vpeirq, (unsigned long) budget);
+ tasklet_init_flags(&budget->vpe_tasklet, vpeirq,
+ (unsigned long)budget, TASKLET_USER_DATA);
/* frontend power on */
if (bi->type != BUDGET_FS_ACTIVY)
diff --git a/drivers/media/pci/tw5864/tw5864-video.c b/drivers/media/pci/tw5864/tw5864-video.c
index 5a1f3aa4101a..811a22ae797f 100644
--- a/drivers/media/pci/tw5864/tw5864-video.c
+++ b/drivers/media/pci/tw5864/tw5864-video.c
@@ -1066,8 +1066,8 @@ int tw5864_video_init(struct tw5864_dev *dev, int *video_nr)
dev->irqmask |= TW5864_INTR_VLC_DONE | TW5864_INTR_TIMER;
tw5864_irqmask_apply(dev);
- tasklet_init(&dev->tasklet, tw5864_handle_frame_task,
- (unsigned long)dev);
+ tasklet_init_flags(&dev->tasklet, tw5864_handle_frame_task,
+ (unsigned long)dev, TASKLET_USER_DATA);
for (i = 0; i < TW5864_INPUTS; i++) {
dev->inputs[i].root = dev;
diff --git a/drivers/media/platform/marvell-ccic/mcam-core.c b/drivers/media/platform/marvell-ccic/mcam-core.c
index f1b301810260..c066db5d329c 100644
--- a/drivers/media/platform/marvell-ccic/mcam-core.c
+++ b/drivers/media/platform/marvell-ccic/mcam-core.c
@@ -1280,8 +1280,8 @@ static int mcam_setup_vb2(struct mcam_camera *cam)
break;
case B_vmalloc:
#ifdef MCAM_MODE_VMALLOC
- tasklet_init(&cam->s_tasklet, mcam_frame_tasklet,
- (unsigned long) cam);
+ tasklet_init_flags(&cam->s_tasklet, mcam_frame_tasklet,
+ (unsigned long)cam, TASKLET_USER_DATA);
vq->ops = &mcam_vb2_ops;
vq->mem_ops = &vb2_vmalloc_memops;
cam->dma_setup = mcam_ctlr_dma_vmalloc;
diff --git a/drivers/media/radio/wl128x/fmdrv_common.c b/drivers/media/radio/wl128x/fmdrv_common.c
index f2b0598d62e5..01d7728613fe 100644
--- a/drivers/media/radio/wl128x/fmdrv_common.c
+++ b/drivers/media/radio/wl128x/fmdrv_common.c
@@ -1540,11 +1540,13 @@ int fmc_prepare(struct fmdev *fmdev)
/* Initialize TX queue and TX tasklet */
skb_queue_head_init(&fmdev->tx_q);
- tasklet_init(&fmdev->tx_task, send_tasklet, (unsigned long)fmdev);
+ tasklet_init_flags(&fmdev->tx_task, send_tasklet,
+ (unsigned long)fmdev, TASKLET_USER_DATA);
/* Initialize RX Queue and RX tasklet */
skb_queue_head_init(&fmdev->rx_q);
- tasklet_init(&fmdev->rx_task, recv_tasklet, (unsigned long)fmdev);
+ tasklet_init_flags(&fmdev->rx_task, recv_tasklet,
+ (unsigned long)fmdev, TASKLET_USER_DATA);
fmdev->irq_info.stage = 0;
atomic_set(&fmdev->tx_cnt, 1);
diff --git a/drivers/media/usb/ttusb-dec/ttusb_dec.c b/drivers/media/usb/ttusb-dec/ttusb_dec.c
index 44ca66cb9b8f..571b6a69b28d 100644
--- a/drivers/media/usb/ttusb-dec/ttusb_dec.c
+++ b/drivers/media/usb/ttusb-dec/ttusb_dec.c
@@ -1218,8 +1218,9 @@ static void ttusb_dec_init_tasklet(struct ttusb_dec *dec)
{
spin_lock_init(&dec->urb_frame_list_lock);
INIT_LIST_HEAD(&dec->urb_frame_list);
- tasklet_init(&dec->urb_tasklet, ttusb_dec_process_urb_frame_list,
- (unsigned long)dec);
+ tasklet_init_flags(&dec->urb_tasklet,
+ ttusb_dec_process_urb_frame_list,
+ (unsigned long)dec, TASKLET_USER_DATA);
}
static int ttusb_init_rc( struct ttusb_dec *dec)
diff --git a/drivers/memstick/host/jmb38x_ms.c b/drivers/memstick/host/jmb38x_ms.c
index 13b969c106ff..374e269a03fa 100644
--- a/drivers/memstick/host/jmb38x_ms.c
+++ b/drivers/memstick/host/jmb38x_ms.c
@@ -893,7 +893,8 @@ static struct memstick_host *jmb38x_ms_alloc_host(struct jmb38x_ms *jm, int cnt)
host->irq = jm->pdev->irq;
host->timeout_jiffies = msecs_to_jiffies(1000);
- tasklet_init(&host->notify, jmb38x_ms_req_tasklet, (unsigned long)msh);
+ tasklet_init_flags(&host->notify, jmb38x_ms_req_tasklet,
+ (unsigned long)msh, TASKLET_USER_DATA);
msh->request = jmb38x_ms_submit_req;
msh->set_param = jmb38x_ms_set_param;
diff --git a/drivers/misc/vmw_vmci/vmci_guest.c b/drivers/misc/vmw_vmci/vmci_guest.c
index dad5abee656e..c4b6d8698776 100644
--- a/drivers/misc/vmw_vmci/vmci_guest.c
+++ b/drivers/misc/vmw_vmci/vmci_guest.c
@@ -467,10 +467,10 @@ static int vmci_guest_probe_device(struct pci_dev *pdev,
vmci_dev->exclusive_vectors = false;
vmci_dev->iobase = iobase;
- tasklet_init(&vmci_dev->datagram_tasklet,
- vmci_dispatch_dgs, (unsigned long)vmci_dev);
- tasklet_init(&vmci_dev->bm_tasklet,
- vmci_process_bitmap, (unsigned long)vmci_dev);
+ tasklet_init_flags(&vmci_dev->datagram_tasklet, vmci_dispatch_dgs,
+ (unsigned long)vmci_dev, TASKLET_USER_DATA);
+ tasklet_init_flags(&vmci_dev->bm_tasklet, vmci_process_bitmap,
+ (unsigned long)vmci_dev, TASKLET_USER_DATA);
vmci_dev->data_buffer = vmalloc(VMCI_MAX_DG_SIZE);
if (!vmci_dev->data_buffer) {
diff --git a/drivers/mmc/host/wbsd.c b/drivers/mmc/host/wbsd.c
index 1e54bbf13d75..b8b607a71eb1 100644
--- a/drivers/mmc/host/wbsd.c
+++ b/drivers/mmc/host/wbsd.c
@@ -1452,16 +1452,16 @@ static int wbsd_request_irq(struct wbsd_host *host, int irq)
/*
* Set up tasklets. Must be done before requesting interrupt.
*/
- tasklet_init(&host->card_tasklet, wbsd_tasklet_card,
- (unsigned long)host);
- tasklet_init(&host->fifo_tasklet, wbsd_tasklet_fifo,
- (unsigned long)host);
- tasklet_init(&host->crc_tasklet, wbsd_tasklet_crc,
- (unsigned long)host);
- tasklet_init(&host->timeout_tasklet, wbsd_tasklet_timeout,
- (unsigned long)host);
- tasklet_init(&host->finish_tasklet, wbsd_tasklet_finish,
- (unsigned long)host);
+ tasklet_init_flags(&host->card_tasklet, wbsd_tasklet_card,
+ (unsigned long)host, TASKLET_USER_DATA);
+ tasklet_init_flags(&host->fifo_tasklet, wbsd_tasklet_fifo,
+ (unsigned long)host, TASKLET_USER_DATA);
+ tasklet_init_flags(&host->crc_tasklet, wbsd_tasklet_crc,
+ (unsigned long)host, TASKLET_USER_DATA);
+ tasklet_init_flags(&host->timeout_tasklet, wbsd_tasklet_timeout,
+ (unsigned long)host, TASKLET_USER_DATA);
+ tasklet_init_flags(&host->finish_tasklet, wbsd_tasklet_finish,
+ (unsigned long)host, TASKLET_USER_DATA);
/*
* Allocate interrupt.
diff --git a/drivers/net/ethernet/broadcom/cnic.c b/drivers/net/ethernet/broadcom/cnic.c
index 510dfc1c236b..26fce29ab463 100644
--- a/drivers/net/ethernet/broadcom/cnic.c
+++ b/drivers/net/ethernet/broadcom/cnic.c
@@ -4456,8 +4456,8 @@ static int cnic_init_bnx2_irq(struct cnic_dev *dev)
CNIC_WR(dev, base + BNX2_HC_CMD_TICKS_OFF, (64 << 16) | 220);
cp->last_status_idx = cp->status_blk.bnx2->status_idx;
- tasklet_init(&cp->cnic_irq_task, cnic_service_bnx2_msix,
- (unsigned long) dev);
+ tasklet_init_flags(&cp->cnic_irq_task, cnic_service_bnx2_msix,
+ (unsigned long)dev, TASKLET_USER_DATA);
err = cnic_request_irq(dev);
if (err)
return err;
@@ -4866,8 +4866,8 @@ static int cnic_init_bnx2x_irq(struct cnic_dev *dev)
struct cnic_eth_dev *ethdev = cp->ethdev;
int err = 0;
- tasklet_init(&cp->cnic_irq_task, cnic_service_bnx2x_bh,
- (unsigned long) dev);
+ tasklet_init_flags(&cp->cnic_irq_task, cnic_service_bnx2x_bh,
+ (unsigned long)dev, TASKLET_USER_DATA);
if (ethdev->drv_state & CNIC_DRV_STATE_USING_MSIX)
err = cnic_request_irq(dev);
diff --git a/drivers/net/ethernet/cadence/macb_main.c b/drivers/net/ethernet/cadence/macb_main.c
index 2b2882615e8b..c6a916f52558 100644
--- a/drivers/net/ethernet/cadence/macb_main.c
+++ b/drivers/net/ethernet/cadence/macb_main.c
@@ -4131,8 +4131,8 @@ static int macb_probe(struct platform_device *pdev)
goto err_out_unregister_mdio;
}
- tasklet_init(&bp->hresp_err_tasklet, macb_hresp_error_task,
- (unsigned long)bp);
+ tasklet_init_flags(&bp->hresp_err_tasklet, macb_hresp_error_task,
+ (unsigned long)bp, TASKLET_USER_DATA);
phy_attached_info(phydev);
diff --git a/drivers/net/ethernet/micrel/ks8842.c b/drivers/net/ethernet/micrel/ks8842.c
index e3d7c74d47bb..17d7f1fffac5 100644
--- a/drivers/net/ethernet/micrel/ks8842.c
+++ b/drivers/net/ethernet/micrel/ks8842.c
@@ -967,8 +967,8 @@ static int ks8842_alloc_dma_bufs(struct net_device *netdev)
goto err;
}
- tasklet_init(&rx_ctl->tasklet, ks8842_rx_frame_dma_tasklet,
- (unsigned long)netdev);
+ tasklet_init_flags(&rx_ctl->tasklet, ks8842_rx_frame_dma_tasklet,
+ (unsigned long)netdev, TASKLET_USER_DATA);
return 0;
err:
@@ -1187,7 +1187,8 @@ static int ks8842_probe(struct platform_device *pdev)
adapter->dma_tx.channel = -1;
}
- tasklet_init(&adapter->tasklet, ks8842_tasklet, (unsigned long)netdev);
+ tasklet_init_flags(&adapter->tasklet, ks8842_tasklet,
+ (unsigned long)netdev, TASKLET_USER_DATA);
spin_lock_init(&adapter->lock);
netdev->netdev_ops = &ks8842_netdev_ops;
diff --git a/drivers/net/ppp/ppp_async.c b/drivers/net/ppp/ppp_async.c
index b287bb811875..22e4f5a62daf 100644
--- a/drivers/net/ppp/ppp_async.c
+++ b/drivers/net/ppp/ppp_async.c
@@ -183,7 +183,8 @@ ppp_asynctty_open(struct tty_struct *tty)
ap->lcp_fcs = -1;
skb_queue_head_init(&ap->rqueue);
- tasklet_init(&ap->tsk, ppp_async_process, (unsigned long) ap);
+ tasklet_init_flags(&ap->tsk, ppp_async_process, (unsigned long)ap,
+ TASKLET_USER_DATA);
refcount_set(&ap->refcnt, 1);
init_completion(&ap->dead);
diff --git a/drivers/net/ppp/ppp_synctty.c b/drivers/net/ppp/ppp_synctty.c
index d02ba2494d93..5d5a61944ad8 100644
--- a/drivers/net/ppp/ppp_synctty.c
+++ b/drivers/net/ppp/ppp_synctty.c
@@ -181,7 +181,8 @@ ppp_sync_open(struct tty_struct *tty)
ap->raccm = ~0U;
skb_queue_head_init(&ap->rqueue);
- tasklet_init(&ap->tsk, ppp_sync_process, (unsigned long) ap);
+ tasklet_init_flags(&ap->tsk, ppp_sync_process, (unsigned long)ap,
+ TASKLET_USER_DATA);
refcount_set(&ap->refcnt, 1);
init_completion(&ap->dead_cmp);
diff --git a/drivers/net/usb/cdc_ncm.c b/drivers/net/usb/cdc_ncm.c
index 50c05d0f44cb..12cabae87dbd 100644
--- a/drivers/net/usb/cdc_ncm.c
+++ b/drivers/net/usb/cdc_ncm.c
@@ -779,7 +779,8 @@ int cdc_ncm_bind_common(struct usbnet *dev, struct usb_interface *intf, u8 data_
hrtimer_init(&ctx->tx_timer, CLOCK_MONOTONIC, HRTIMER_MODE_REL);
ctx->tx_timer.function = &cdc_ncm_tx_timer_cb;
- tasklet_init(&ctx->bh, cdc_ncm_txpath_bh, (unsigned long)dev);
+ tasklet_init_flags(&ctx->bh, cdc_ncm_txpath_bh, (unsigned long)dev,
+ TASKLET_USER_DATA);
atomic_set(&ctx->stop, 0);
spin_lock_init(&ctx->mtx);
diff --git a/drivers/net/usb/hso.c b/drivers/net/usb/hso.c
index d6916f787fce..ae71221f4de4 100644
--- a/drivers/net/usb/hso.c
+++ b/drivers/net/usb/hso.c
@@ -1278,9 +1278,9 @@ static int hso_serial_open(struct tty_struct *tty, struct file *filp)
serial->rx_state = RX_IDLE;
/* Force default termio settings */
_hso_serial_set_termios(tty, NULL);
- tasklet_init(&serial->unthrottle_tasklet,
- (void (*)(unsigned long))hso_unthrottle_tasklet,
- (unsigned long)serial);
+ tasklet_init_flags(&serial->unthrottle_tasklet,
+ (void(*)(unsigned long))hso_unthrottle_tasklet,
+ (unsigned long)serial, TASKLET_USER_DATA);
result = hso_start_serial_device(serial->parent, GFP_KERNEL);
if (result) {
hso_stop_serial_device(serial->parent);
diff --git a/drivers/net/wan/farsync.c b/drivers/net/wan/farsync.c
index 070dee4a1ac6..a0b4e44cdb64 100644
--- a/drivers/net/wan/farsync.c
+++ b/drivers/net/wan/farsync.c
@@ -573,8 +573,8 @@ static void do_bottom_half_rx(struct fst_card_info *card);
static void fst_process_tx_work_q(unsigned long work_q);
static void fst_process_int_work_q(unsigned long work_q);
-static DECLARE_TASKLET(fst_tx_task, fst_process_tx_work_q, 0);
-static DECLARE_TASKLET(fst_int_task, fst_process_int_work_q, 0);
+static DECLARE_TASKLET_USERDATA(fst_tx_task, fst_process_tx_work_q, 0);
+static DECLARE_TASKLET_USERDATA(fst_int_task, fst_process_int_work_q, 0);
static struct fst_card_info *fst_card_array[FST_MAX_CARDS];
static spinlock_t fst_work_q_lock;
diff --git a/drivers/net/wireless/ath/carl9170/usb.c b/drivers/net/wireless/ath/carl9170/usb.c
index e7c3f3b8457d..5643ee0f8795 100644
--- a/drivers/net/wireless/ath/carl9170/usb.c
+++ b/drivers/net/wireless/ath/carl9170/usb.c
@@ -1085,8 +1085,8 @@ static int carl9170_usb_probe(struct usb_interface *intf,
init_completion(&ar->cmd_wait);
init_completion(&ar->fw_boot_wait);
init_completion(&ar->fw_load_wait);
- tasklet_init(&ar->usb_tasklet, carl9170_usb_tasklet,
- (unsigned long)ar);
+ tasklet_init_flags(&ar->usb_tasklet, carl9170_usb_tasklet,
+ (unsigned long)ar, TASKLET_USER_DATA);
atomic_set(&ar->tx_cmd_urbs, 0);
atomic_set(&ar->tx_anch_urbs, 0);
diff --git a/drivers/net/wireless/broadcom/b43legacy/main.c b/drivers/net/wireless/broadcom/b43legacy/main.c
index e61752e584dd..6c08c2b73d7a 100644
--- a/drivers/net/wireless/broadcom/b43legacy/main.c
+++ b/drivers/net/wireless/broadcom/b43legacy/main.c
@@ -3774,9 +3774,9 @@ static int b43legacy_one_core_attach(struct ssb_device *dev,
wldev->wl = wl;
b43legacy_set_status(wldev, B43legacy_STAT_UNINIT);
wldev->bad_frames_preempt = modparam_bad_frames_preempt;
- tasklet_init(&wldev->isr_tasklet,
- (void (*)(unsigned long))b43legacy_interrupt_tasklet,
- (unsigned long)wldev);
+ tasklet_init_flags(&wldev->isr_tasklet,
+ (void(*)(unsigned long))b43legacy_interrupt_tasklet,
+ (unsigned long)wldev, TASKLET_USER_DATA);
if (modparam_pio)
wldev->__using_pio = true;
INIT_LIST_HEAD(&wldev->list);
diff --git a/drivers/net/wireless/broadcom/b43legacy/pio.c b/drivers/net/wireless/broadcom/b43legacy/pio.c
index 282eedec675e..669ab1ec2d23 100644
--- a/drivers/net/wireless/broadcom/b43legacy/pio.c
+++ b/drivers/net/wireless/broadcom/b43legacy/pio.c
@@ -344,8 +344,8 @@ struct b43legacy_pioqueue *b43legacy_setup_pioqueue(struct b43legacy_wldev *dev,
INIT_LIST_HEAD(&queue->txfree);
INIT_LIST_HEAD(&queue->txqueue);
INIT_LIST_HEAD(&queue->txrunning);
- tasklet_init(&queue->txtask, tx_tasklet,
- (unsigned long)queue);
+ tasklet_init_flags(&queue->txtask, tx_tasklet, (unsigned long)queue,
+ TASKLET_USER_DATA);
value = b43legacy_read32(dev, B43legacy_MMIO_MACCTL);
value &= ~B43legacy_MACCTL_BE;
diff --git a/drivers/net/wireless/intel/ipw2x00/ipw2100.c b/drivers/net/wireless/intel/ipw2x00/ipw2100.c
index 0b8c2275ec55..f396eda80074 100644
--- a/drivers/net/wireless/intel/ipw2x00/ipw2100.c
+++ b/drivers/net/wireless/intel/ipw2x00/ipw2100.c
@@ -6151,8 +6151,9 @@ static struct net_device *ipw2100_alloc_device(struct pci_dev *pci_dev,
INIT_DELAYED_WORK(&priv->rf_kill, ipw2100_rf_kill);
INIT_DELAYED_WORK(&priv->scan_event, ipw2100_scan_event);
- tasklet_init(&priv->irq_tasklet, (void (*)(unsigned long))
- ipw2100_irq_tasklet, (unsigned long)priv);
+ tasklet_init_flags(&priv->irq_tasklet,
+ (void(*)(unsigned long))ipw2100_irq_tasklet,
+ (unsigned long)priv, TASKLET_USER_DATA);
/* NOTE: We do not start the deferred work for status checks yet */
priv->stop_rf_kill = 1;
diff --git a/drivers/net/wireless/intel/ipw2x00/ipw2200.c b/drivers/net/wireless/intel/ipw2x00/ipw2200.c
index 33931a4435e3..79d2008fe4d7 100644
--- a/drivers/net/wireless/intel/ipw2x00/ipw2200.c
+++ b/drivers/net/wireless/intel/ipw2x00/ipw2200.c
@@ -10694,8 +10694,9 @@ static int ipw_setup_deferred_work(struct ipw_priv *priv)
INIT_WORK(&priv->qos_activate, ipw_bg_qos_activate);
#endif /* CONFIG_IPW2200_QOS */
- tasklet_init(&priv->irq_tasklet, (void (*)(unsigned long))
- ipw_irq_tasklet, (unsigned long)priv);
+ tasklet_init_flags(&priv->irq_tasklet,
+ (void(*)(unsigned long))ipw_irq_tasklet,
+ (unsigned long)priv, TASKLET_USER_DATA);
return ret;
}
diff --git a/drivers/net/wireless/intel/iwlegacy/3945-mac.c b/drivers/net/wireless/intel/iwlegacy/3945-mac.c
index 48cdce4a6ca0..96db8a4462b7 100644
--- a/drivers/net/wireless/intel/iwlegacy/3945-mac.c
+++ b/drivers/net/wireless/intel/iwlegacy/3945-mac.c
@@ -3418,9 +3418,9 @@ il3945_setup_deferred_work(struct il_priv *il)
timer_setup(&il->watchdog, il_bg_watchdog, 0);
- tasklet_init(&il->irq_tasklet,
- (void (*)(unsigned long))il3945_irq_tasklet,
- (unsigned long)il);
+ tasklet_init_flags(&il->irq_tasklet,
+ (void(*)(unsigned long))il3945_irq_tasklet,
+ (unsigned long)il, TASKLET_USER_DATA);
}
static void
diff --git a/drivers/net/wireless/intel/iwlegacy/4965-mac.c b/drivers/net/wireless/intel/iwlegacy/4965-mac.c
index 8132d6964923..0b464f09c9b5 100644
--- a/drivers/net/wireless/intel/iwlegacy/4965-mac.c
+++ b/drivers/net/wireless/intel/iwlegacy/4965-mac.c
@@ -6256,9 +6256,9 @@ il4965_setup_deferred_work(struct il_priv *il)
timer_setup(&il->watchdog, il_bg_watchdog, 0);
- tasklet_init(&il->irq_tasklet,
- (void (*)(unsigned long))il4965_irq_tasklet,
- (unsigned long)il);
+ tasklet_init_flags(&il->irq_tasklet,
+ (void(*)(unsigned long))il4965_irq_tasklet,
+ (unsigned long)il, TASKLET_USER_DATA);
}
static void
diff --git a/drivers/net/wireless/intersil/orinoco/main.c b/drivers/net/wireless/intersil/orinoco/main.c
index 28dac36d7c4c..234cddb53d5d 100644
--- a/drivers/net/wireless/intersil/orinoco/main.c
+++ b/drivers/net/wireless/intersil/orinoco/main.c
@@ -2198,8 +2198,8 @@ struct orinoco_private
INIT_WORK(&priv->wevent_work, orinoco_send_wevents);
INIT_LIST_HEAD(&priv->rx_list);
- tasklet_init(&priv->rx_tasklet, orinoco_rx_isr_tasklet,
- (unsigned long) priv);
+ tasklet_init_flags(&priv->rx_tasklet, orinoco_rx_isr_tasklet,
+ (unsigned long)priv, TASKLET_USER_DATA);
spin_lock_init(&priv->scan_lock);
INIT_LIST_HEAD(&priv->scan_list);
diff --git a/drivers/net/wireless/mac80211_hwsim.c b/drivers/net/wireless/mac80211_hwsim.c
index 320edcac4699..d0cdd00ee6c4 100644
--- a/drivers/net/wireless/mac80211_hwsim.c
+++ b/drivers/net/wireless/mac80211_hwsim.c
@@ -2919,9 +2919,9 @@ static int mac80211_hwsim_new_radio(struct genl_info *info,
wiphy_ext_feature_set(hw->wiphy, NL80211_EXT_FEATURE_CQM_RSSI_LIST);
- tasklet_hrtimer_init(&data->beacon_timer,
- mac80211_hwsim_beacon,
- CLOCK_MONOTONIC, HRTIMER_MODE_ABS);
+ tasklet_hrtimer_init(&data->beacon_timer, mac80211_hwsim_beacon,
+ CLOCK_MONOTONIC,
+ HRTIMER_MODE_ABS | HRTIMER_MODE_USER_DATA);
err = ieee80211_register_hw(hw);
if (err < 0) {
diff --git a/drivers/net/wireless/marvell/mwl8k.c b/drivers/net/wireless/marvell/mwl8k.c
index 9a55fe1a2f0d..c4d4785fb80d 100644
--- a/drivers/net/wireless/marvell/mwl8k.c
+++ b/drivers/net/wireless/marvell/mwl8k.c
@@ -6112,9 +6112,11 @@ static int mwl8k_firmware_load_success(struct mwl8k_priv *priv)
INIT_WORK(&priv->fw_reload, mwl8k_hw_restart_work);
/* TX reclaim and RX tasklets. */
- tasklet_init(&priv->poll_tx_task, mwl8k_tx_poll, (unsigned long)hw);
+ tasklet_init_flags(&priv->poll_tx_task, mwl8k_tx_poll,
+ (unsigned long)hw, TASKLET_USER_DATA);
tasklet_disable(&priv->poll_tx_task);
- tasklet_init(&priv->poll_rx_task, mwl8k_rx_poll, (unsigned long)hw);
+ tasklet_init_flags(&priv->poll_rx_task, mwl8k_rx_poll,
+ (unsigned long)hw, TASKLET_USER_DATA);
tasklet_disable(&priv->poll_rx_task);
/* Power management cookie */
diff --git a/drivers/net/wireless/realtek/rtlwifi/pci.c b/drivers/net/wireless/realtek/rtlwifi/pci.c
index 58b64849172a..7269e8d7a99d 100644
--- a/drivers/net/wireless/realtek/rtlwifi/pci.c
+++ b/drivers/net/wireless/realtek/rtlwifi/pci.c
@@ -1213,12 +1213,12 @@ static void _rtl_pci_init_struct(struct ieee80211_hw *hw,
rtlpci->acm_method = EACMWAY2_SW;
/*task */
- tasklet_init(&rtlpriv->works.irq_tasklet,
- (void (*)(unsigned long))_rtl_pci_irq_tasklet,
- (unsigned long)hw);
- tasklet_init(&rtlpriv->works.irq_prepare_bcn_tasklet,
- (void (*)(unsigned long))_rtl_pci_prepare_bcn_tasklet,
- (unsigned long)hw);
+ tasklet_init_flags(&rtlpriv->works.irq_tasklet,
+ (void(*)(unsigned long))_rtl_pci_irq_tasklet,
+ (unsigned long)hw, TASKLET_USER_DATA);
+ tasklet_init_flags(&rtlpriv->works.irq_prepare_bcn_tasklet,
+ (void(*)(unsigned long))_rtl_pci_prepare_bcn_tasklet,
+ (unsigned long)hw, TASKLET_USER_DATA);
INIT_WORK(&rtlpriv->works.lps_change_work,
rtl_lps_change_work_callback);
}
diff --git a/drivers/scsi/aic94xx/aic94xx_hwi.c b/drivers/scsi/aic94xx/aic94xx_hwi.c
index 2bc7615193bd..a51ca4081ce4 100644
--- a/drivers/scsi/aic94xx/aic94xx_hwi.c
+++ b/drivers/scsi/aic94xx/aic94xx_hwi.c
@@ -279,8 +279,8 @@ static int asd_init_dl(struct asd_ha_struct *asd_ha)
asd_ha->seq.dl = asd_ha->seq.actual_dl->vaddr;
asd_ha->seq.dl_toggle = ASD_DEF_DL_TOGGLE;
asd_ha->seq.dl_next = 0;
- tasklet_init(&asd_ha->seq.dl_tasklet, asd_dl_tasklet_handler,
- (unsigned long) asd_ha);
+ tasklet_init_flags(&asd_ha->seq.dl_tasklet, asd_dl_tasklet_handler,
+ (unsigned long)asd_ha, TASKLET_USER_DATA);
return 0;
}
diff --git a/drivers/staging/ks7010/ks_hostif.c b/drivers/staging/ks7010/ks_hostif.c
index 065bce193fac..0c16debab98f 100644
--- a/drivers/staging/ks7010/ks_hostif.c
+++ b/drivers/staging/ks7010/ks_hostif.c
@@ -2194,7 +2194,8 @@ static inline void hostif_sme_init(struct ks_wlan_private *priv)
priv->sme_i.qtail = 0;
spin_lock_init(&priv->sme_i.sme_spin);
priv->sme_i.sme_flag = 0;
- tasklet_init(&priv->sme_task, hostif_sme_task, (unsigned long)priv);
+ tasklet_init_flags(&priv->sme_task, hostif_sme_task,
+ (unsigned long)priv, TASKLET_USER_DATA);
}
static inline void hostif_wpa_init(struct ks_wlan_private *priv)
diff --git a/drivers/staging/rtl8188eu/hal/rtl8188eu_recv.c b/drivers/staging/rtl8188eu/hal/rtl8188eu_recv.c
index c0d51ba70a75..192d3327372d 100644
--- a/drivers/staging/rtl8188eu/hal/rtl8188eu_recv.c
+++ b/drivers/staging/rtl8188eu/hal/rtl8188eu_recv.c
@@ -22,9 +22,9 @@ int rtw_hal_init_recv_priv(struct adapter *padapter)
int i, res = _SUCCESS;
struct recv_buf *precvbuf;
- tasklet_init(&precvpriv->recv_tasklet,
- (void(*)(unsigned long))rtl8188eu_recv_tasklet,
- (unsigned long)padapter);
+ tasklet_init_flags(&precvpriv->recv_tasklet,
+ (void(*)(unsigned long))rtl8188eu_recv_tasklet,
+ (unsigned long)padapter, TASKLET_USER_DATA);
/* init recv_buf */
_rtw_init_queue(&precvpriv->free_recv_buf_queue);
diff --git a/drivers/staging/rtl8188eu/hal/rtl8188eu_xmit.c b/drivers/staging/rtl8188eu/hal/rtl8188eu_xmit.c
index a72e069269b8..2de465fadead 100644
--- a/drivers/staging/rtl8188eu/hal/rtl8188eu_xmit.c
+++ b/drivers/staging/rtl8188eu/hal/rtl8188eu_xmit.c
@@ -17,9 +17,9 @@ s32 rtw_hal_init_xmit_priv(struct adapter *adapt)
{
struct xmit_priv *pxmitpriv = &adapt->xmitpriv;
- tasklet_init(&pxmitpriv->xmit_tasklet,
- (void(*)(unsigned long))rtl8188eu_xmit_tasklet,
- (unsigned long)adapt);
+ tasklet_init_flags(&pxmitpriv->xmit_tasklet,
+ (void(*)(unsigned long))rtl8188eu_xmit_tasklet,
+ (unsigned long)adapt, TASKLET_USER_DATA);
return _SUCCESS;
}
diff --git a/drivers/staging/rtl8192e/rtl8192e/rtl_core.c b/drivers/staging/rtl8192e/rtl8192e/rtl_core.c
index 6070e3da1be6..a24ab322ee2a 100644
--- a/drivers/staging/rtl8192e/rtl8192e/rtl_core.c
+++ b/drivers/staging/rtl8192e/rtl8192e/rtl_core.c
@@ -1018,15 +1018,15 @@ static void _rtl92e_init_priv_task(struct net_device *dev)
(void *)rtl92e_hw_wakeup_wq, dev);
INIT_DELAYED_WORK_RSL(&priv->rtllib->hw_sleep_wq,
(void *)rtl92e_hw_sleep_wq, dev);
- tasklet_init(&priv->irq_rx_tasklet,
- (void(*)(unsigned long))_rtl92e_irq_rx_tasklet,
- (unsigned long)priv);
- tasklet_init(&priv->irq_tx_tasklet,
- (void(*)(unsigned long))_rtl92e_irq_tx_tasklet,
- (unsigned long)priv);
- tasklet_init(&priv->irq_prepare_beacon_tasklet,
- (void(*)(unsigned long))_rtl92e_prepare_beacon,
- (unsigned long)priv);
+ tasklet_init_flags(&priv->irq_rx_tasklet,
+ (void(*)(unsigned long))_rtl92e_irq_rx_tasklet,
+ (unsigned long)priv, TASKLET_USER_DATA);
+ tasklet_init_flags(&priv->irq_tx_tasklet,
+ (void(*)(unsigned long))_rtl92e_irq_tx_tasklet,
+ (unsigned long)priv, TASKLET_USER_DATA);
+ tasklet_init_flags(&priv->irq_prepare_beacon_tasklet,
+ (void(*)(unsigned long))_rtl92e_prepare_beacon,
+ (unsigned long)priv, TASKLET_USER_DATA);
}
static short _rtl92e_get_channel_map(struct net_device *dev)
diff --git a/drivers/staging/rtl8192e/rtllib_softmac.c b/drivers/staging/rtl8192e/rtllib_softmac.c
index 287d0c11fa38..02e5abfa5664 100644
--- a/drivers/staging/rtl8192e/rtllib_softmac.c
+++ b/drivers/staging/rtl8192e/rtllib_softmac.c
@@ -3040,9 +3040,9 @@ void rtllib_softmac_init(struct rtllib_device *ieee)
spin_lock_init(&ieee->mgmt_tx_lock);
spin_lock_init(&ieee->beacon_lock);
- tasklet_init(&ieee->ps_task,
- (void(*)(unsigned long)) rtllib_sta_ps,
- (unsigned long)ieee);
+ tasklet_init_flags(&ieee->ps_task,
+ (void(*)(unsigned long))rtllib_sta_ps,
+ (unsigned long)ieee, TASKLET_USER_DATA);
}
diff --git a/drivers/staging/rtl8712/rtl8712_recv.c b/drivers/staging/rtl8712/rtl8712_recv.c
index 5bf9070b7a28..6d8240ccacce 100644
--- a/drivers/staging/rtl8712/rtl8712_recv.c
+++ b/drivers/staging/rtl8712/rtl8712_recv.c
@@ -66,9 +66,9 @@ int r8712_init_recv_priv(struct recv_priv *precvpriv, struct _adapter *padapter)
precvbuf++;
}
precvpriv->free_recv_buf_queue_cnt = NR_RECVBUFF;
- tasklet_init(&precvpriv->recv_tasklet,
- (void(*)(unsigned long))recv_tasklet,
- (unsigned long)padapter);
+ tasklet_init_flags(&precvpriv->recv_tasklet,
+ (void(*)(unsigned long))recv_tasklet,
+ (unsigned long)padapter, TASKLET_USER_DATA);
skb_queue_head_init(&precvpriv->rx_skb_queue);
skb_queue_head_init(&precvpriv->free_recv_skb_queue);
diff --git a/drivers/staging/rtl8712/rtl871x_xmit.c b/drivers/staging/rtl8712/rtl871x_xmit.c
index 5c7dc9c6f76b..12efecddc7ca 100644
--- a/drivers/staging/rtl8712/rtl871x_xmit.c
+++ b/drivers/staging/rtl8712/rtl871x_xmit.c
@@ -142,9 +142,9 @@ sint _r8712_init_xmit_priv(struct xmit_priv *pxmitpriv,
INIT_WORK(&padapter->wkFilterRxFF0, r8712_SetFilter);
alloc_hwxmits(padapter);
init_hwxmits(pxmitpriv->hwxmits, pxmitpriv->hwxmit_entry);
- tasklet_init(&pxmitpriv->xmit_tasklet,
- (void(*)(unsigned long))r8712_xmit_bh,
- (unsigned long)padapter);
+ tasklet_init_flags(&pxmitpriv->xmit_tasklet,
+ (void(*)(unsigned long))r8712_xmit_bh,
+ (unsigned long)padapter, TASKLET_USER_DATA);
return _SUCCESS;
}
diff --git a/drivers/staging/rtl8723bs/hal/rtl8723bs_recv.c b/drivers/staging/rtl8723bs/hal/rtl8723bs_recv.c
index 26742960ed65..49278c11e797 100644
--- a/drivers/staging/rtl8723bs/hal/rtl8723bs_recv.c
+++ b/drivers/staging/rtl8723bs/hal/rtl8723bs_recv.c
@@ -468,11 +468,9 @@ s32 rtl8723bs_init_recv_priv(struct adapter *padapter)
goto initbuferror;
/* 3 2. init tasklet */
- tasklet_init(
- &precvpriv->recv_tasklet,
- (void(*)(unsigned long))rtl8723bs_recv_tasklet,
- (unsigned long)padapter
- );
+ tasklet_init_flags(&precvpriv->recv_tasklet,
+ (void(*)(unsigned long))rtl8723bs_recv_tasklet,
+ (unsigned long)padapter, TASKLET_USER_DATA);
goto exit;
diff --git a/drivers/tty/ipwireless/hardware.c b/drivers/tty/ipwireless/hardware.c
index b0baa4ce10f9..2274280ade21 100644
--- a/drivers/tty/ipwireless/hardware.c
+++ b/drivers/tty/ipwireless/hardware.c
@@ -1633,7 +1633,8 @@ struct ipw_hardware *ipwireless_hardware_create(void)
INIT_LIST_HEAD(&hw->rx_queue);
INIT_LIST_HEAD(&hw->rx_pool);
spin_lock_init(&hw->lock);
- tasklet_init(&hw->tasklet, ipwireless_do_tasklet, (unsigned long) hw);
+ tasklet_init_flags(&hw->tasklet, ipwireless_do_tasklet,
+ (unsigned long)hw, TASKLET_USER_DATA);
INIT_WORK(&hw->work_rx, ipw_receive_data_work);
timer_setup(&hw->setup_timer, ipwireless_setup_timer, 0);
diff --git a/drivers/tty/serial/ifx6x60.c b/drivers/tty/serial/ifx6x60.c
index 4d796a82f311..f12da1602c79 100644
--- a/drivers/tty/serial/ifx6x60.c
+++ b/drivers/tty/serial/ifx6x60.c
@@ -1067,8 +1067,8 @@ static int ifx_spi_spi_probe(struct spi_device *spi)
init_waitqueue_head(&ifx_dev->mdm_reset_wait);
spi_set_drvdata(spi, ifx_dev);
- tasklet_init(&ifx_dev->io_work_tasklet, ifx_spi_io,
- (unsigned long)ifx_dev);
+ tasklet_init_flags(&ifx_dev->io_work_tasklet, ifx_spi_io,
+ (unsigned long)ifx_dev, TASKLET_USER_DATA);
set_bit(IFX_SPI_STATE_PRESENT, &ifx_dev->flags);
diff --git a/drivers/usb/atm/usbatm.c b/drivers/usb/atm/usbatm.c
index dbea28495e1d..8bcd259a3c6d 100644
--- a/drivers/usb/atm/usbatm.c
+++ b/drivers/usb/atm/usbatm.c
@@ -1069,8 +1069,10 @@ int usbatm_usb_probe(struct usb_interface *intf, const struct usb_device_id *id,
usbatm_init_channel(&instance->rx_channel);
usbatm_init_channel(&instance->tx_channel);
- tasklet_init(&instance->rx_channel.tasklet, usbatm_rx_process, (unsigned long)instance);
- tasklet_init(&instance->tx_channel.tasklet, usbatm_tx_process, (unsigned long)instance);
+ tasklet_init_flags(&instance->rx_channel.tasklet, usbatm_rx_process,
+ (unsigned long)instance, TASKLET_USER_DATA);
+ tasklet_init_flags(&instance->tx_channel.tasklet, usbatm_tx_process,
+ (unsigned long)instance, TASKLET_USER_DATA);
instance->rx_channel.stride = ATM_CELL_SIZE + driver->rx_padding;
instance->tx_channel.stride = ATM_CELL_SIZE + driver->tx_padding;
instance->rx_channel.usbatm = instance->tx_channel.usbatm = instance;
diff --git a/drivers/usb/gadget/function/f_midi.c b/drivers/usb/gadget/function/f_midi.c
index 46af0aa07e2e..db59d687d9b4 100644
--- a/drivers/usb/gadget/function/f_midi.c
+++ b/drivers/usb/gadget/function/f_midi.c
@@ -875,7 +875,8 @@ static int f_midi_bind(struct usb_configuration *c, struct usb_function *f)
int status, n, jack = 1, i = 0, endpoint_descriptor_index = 0;
midi->gadget = cdev->gadget;
- tasklet_init(&midi->tasklet, f_midi_in_tasklet, (unsigned long) midi);
+ tasklet_init_flags(&midi->tasklet, f_midi_in_tasklet,
+ (unsigned long)midi, TASKLET_USER_DATA);
status = f_midi_register_card(midi);
if (status < 0)
goto fail_register;
diff --git a/drivers/usb/serial/mos7720.c b/drivers/usb/serial/mos7720.c
index fc52ac75fbf6..90a06d4e3dc0 100644
--- a/drivers/usb/serial/mos7720.c
+++ b/drivers/usb/serial/mos7720.c
@@ -716,8 +716,8 @@ static int mos7715_parport_init(struct usb_serial *serial)
INIT_LIST_HEAD(&mos_parport->deferred_urbs);
usb_set_serial_data(serial, mos_parport); /* hijack private pointer */
mos_parport->serial = serial;
- tasklet_init(&mos_parport->urb_tasklet, send_deferred_urbs,
- (unsigned long) mos_parport);
+ tasklet_init_flags(&mos_parport->urb_tasklet, send_deferred_urbs,
+ (unsigned long)mos_parport, TASKLET_USER_DATA);
init_completion(&mos_parport->syncmsg_compl);
/* cycle parallel port reset bit */
diff --git a/net/atm/pppoatm.c b/net/atm/pppoatm.c
index d84227d75717..cf28ba053868 100644
--- a/net/atm/pppoatm.c
+++ b/net/atm/pppoatm.c
@@ -398,7 +398,7 @@ static int pppoatm_assign_vcc(struct atm_vcc *atmvcc, void __user *arg)
* Each PPPoATM instance has its own tasklet - this is just a
* prototypical one used to initialize them
*/
- static const DECLARE_TASKLET(tasklet_proto, pppoatm_wakeup_sender, 0);
+ static const DECLARE_TASKLET_USERDATA(tasklet_proto, pppoatm_wakeup_sender, 0);
if (copy_from_user(&be, arg, sizeof be))
return -EFAULT;
if (be.encaps != PPPOATM_ENCAPS_AUTODETECT &&
diff --git a/net/mac80211/main.c b/net/mac80211/main.c
index 87a729926734..ccf3a220e957 100644
--- a/net/mac80211/main.c
+++ b/net/mac80211/main.c
@@ -694,16 +694,16 @@ struct ieee80211_hw *ieee80211_alloc_hw_nm(size_t priv_data_len,
skb_queue_head_init(&local->pending[i]);
atomic_set(&local->agg_queue_stop[i], 0);
}
- tasklet_init(&local->tx_pending_tasklet, ieee80211_tx_pending,
- (unsigned long)local);
+ tasklet_init_flags(&local->tx_pending_tasklet, ieee80211_tx_pending,
+ (unsigned long)local, TASKLET_USER_DATA);
if (ops->wake_tx_queue)
- tasklet_init(&local->wake_txqs_tasklet, ieee80211_wake_txqs,
- (unsigned long)local);
+ tasklet_init_flags(&local->wake_txqs_tasklet,
+ ieee80211_wake_txqs, (unsigned long)local,
+ TASKLET_USER_DATA);
- tasklet_init(&local->tasklet,
- ieee80211_tasklet_handler,
- (unsigned long) local);
+ tasklet_init_flags(&local->tasklet, ieee80211_tasklet_handler,
+ (unsigned long)local, TASKLET_USER_DATA);
skb_queue_head_init(&local->skb_queue);
skb_queue_head_init(&local->skb_queue_unreliable);
diff --git a/net/rds/ib_cm.c b/net/rds/ib_cm.c
index bfbb31f0c7fd..9da2cffaaf6f 100644
--- a/net/rds/ib_cm.c
+++ b/net/rds/ib_cm.c
@@ -1118,10 +1118,10 @@ int rds_ib_conn_alloc(struct rds_connection *conn, gfp_t gfp)
}
INIT_LIST_HEAD(&ic->ib_node);
- tasklet_init(&ic->i_send_tasklet, rds_ib_tasklet_fn_send,
- (unsigned long)ic);
- tasklet_init(&ic->i_recv_tasklet, rds_ib_tasklet_fn_recv,
- (unsigned long)ic);
+ tasklet_init_flags(&ic->i_send_tasklet, rds_ib_tasklet_fn_send,
+ (unsigned long)ic, TASKLET_USER_DATA);
+ tasklet_init_flags(&ic->i_recv_tasklet, rds_ib_tasklet_fn_recv,
+ (unsigned long)ic, TASKLET_USER_DATA);
mutex_init(&ic->i_recv_mutex);
#ifndef KERNEL_HAS_ATOMIC64
spin_lock_init(&ic->i_ack_lock);
diff --git a/net/xfrm/xfrm_state.c b/net/xfrm/xfrm_state.c
index 23c92891758a..4471d94d2372 100644
--- a/net/xfrm/xfrm_state.c
+++ b/net/xfrm/xfrm_state.c
@@ -581,7 +581,8 @@ struct xfrm_state *xfrm_state_alloc(struct net *net)
INIT_HLIST_NODE(&x->bysrc);
INIT_HLIST_NODE(&x->byspi);
tasklet_hrtimer_init(&x->mtimer, xfrm_timer_handler,
- CLOCK_BOOTTIME, HRTIMER_MODE_ABS);
+ CLOCK_BOOTTIME,
+ HRTIMER_MODE_ABS | HRTIMER_MODE_USER_DATA);
timer_setup(&x->rtimer, xfrm_replay_timer_handler, 0);
x->curlft.add_time = ktime_get_real_seconds();
x->lft.soft_byte_limit = XFRM_INF;
diff --git a/sound/core/timer.c b/sound/core/timer.c
index c8a39813f609..578e97f0bb99 100644
--- a/sound/core/timer.c
+++ b/sound/core/timer.c
@@ -909,8 +909,8 @@ int snd_timer_new(struct snd_card *card, char *id, struct snd_timer_id *tid,
INIT_LIST_HEAD(&timer->ack_list_head);
INIT_LIST_HEAD(&timer->sack_list_head);
spin_lock_init(&timer->lock);
- tasklet_init(&timer->task_queue, snd_timer_tasklet,
- (unsigned long)timer);
+ tasklet_init_flags(&timer->task_queue, snd_timer_tasklet,
+ (unsigned long)timer, TASKLET_USER_DATA);
timer->max_instances = 1000; /* default limit per timer */
if (card != NULL) {
timer->module = card->module;
diff --git a/sound/pci/asihpi/asihpi.c b/sound/pci/asihpi/asihpi.c
index aad74e809797..4c9c7c63c9f8 100644
--- a/sound/pci/asihpi/asihpi.c
+++ b/sound/pci/asihpi/asihpi.c
@@ -2912,8 +2912,8 @@ static int snd_asihpi_probe(struct pci_dev *pci_dev,
if (hpi->interrupt_mode) {
asihpi->pcm_start = snd_card_asihpi_pcm_int_start;
asihpi->pcm_stop = snd_card_asihpi_pcm_int_stop;
- tasklet_init(&asihpi->t, snd_card_asihpi_int_task,
- (unsigned long)hpi);
+ tasklet_init_flags(&asihpi->t, snd_card_asihpi_int_task,
+ (unsigned long)hpi, TASKLET_USER_DATA);
hpi->interrupt_callback = snd_card_asihpi_isr;
} else {
asihpi->pcm_start = snd_card_asihpi_pcm_timer_start;
diff --git a/sound/pci/rme9652/hdsp.c b/sound/pci/rme9652/hdsp.c
index 9917f8a3c582..8620f3a5b3f6 100644
--- a/sound/pci/rme9652/hdsp.c
+++ b/sound/pci/rme9652/hdsp.c
@@ -5204,7 +5204,8 @@ static int snd_hdsp_create(struct snd_card *card,
spin_lock_init(&hdsp->lock);
- tasklet_init(&hdsp->midi_tasklet, hdsp_midi_tasklet, (unsigned long)hdsp);
+ tasklet_init_flags(&hdsp->midi_tasklet, hdsp_midi_tasklet,
+ (unsigned long)hdsp, TASKLET_USER_DATA);
pci_read_config_word(hdsp->pci, PCI_CLASS_REVISION, &hdsp->firmware_rev);
hdsp->firmware_rev &= 0xff;
diff --git a/sound/pci/rme9652/hdspm.c b/sound/pci/rme9652/hdspm.c
index ab86733e2d12..74c3bde6c6d0 100644
--- a/sound/pci/rme9652/hdspm.c
+++ b/sound/pci/rme9652/hdspm.c
@@ -6856,8 +6856,8 @@ static int snd_hdspm_create(struct snd_card *card,
}
- tasklet_init(&hdspm->midi_tasklet,
- hdspm_midi_tasklet, (unsigned long) hdspm);
+ tasklet_init_flags(&hdspm->midi_tasklet, hdspm_midi_tasklet,
+ (unsigned long)hdspm, TASKLET_USER_DATA);
if (hdspm->io_type != MADIface) {
diff --git a/sound/usb/midi.c b/sound/usb/midi.c
index a929f1cf1265..19928bc86748 100644
--- a/sound/usb/midi.c
+++ b/sound/usb/midi.c
@@ -1441,7 +1441,8 @@ static int snd_usbmidi_out_endpoint_create(struct snd_usb_midi *umidi,
}
spin_lock_init(&ep->buffer_lock);
- tasklet_init(&ep->tasklet, snd_usbmidi_out_tasklet, (unsigned long)ep);
+ tasklet_init_flags(&ep->tasklet, snd_usbmidi_out_tasklet,
+ (unsigned long)ep, TASKLET_USER_DATA);
init_waitqueue_head(&ep->drain_wait);
for (i = 0; i < 0x10; ++i)
diff --git a/sound/usb/misc/ua101.c b/sound/usb/misc/ua101.c
index a0b6d039017f..0c7a396c415d 100644
--- a/sound/usb/misc/ua101.c
+++ b/sound/usb/misc/ua101.c
@@ -1247,8 +1247,8 @@ static int ua101_probe(struct usb_interface *interface,
spin_lock_init(&ua->lock);
mutex_init(&ua->mutex);
INIT_LIST_HEAD(&ua->ready_playback_urbs);
- tasklet_init(&ua->playback_tasklet,
- playback_tasklet, (unsigned long)ua);
+ tasklet_init_flags(&ua->playback_tasklet, playback_tasklet,
+ (unsigned long)ua, TASKLET_USER_DATA);
init_waitqueue_head(&ua->alsa_capture_wait);
init_waitqueue_head(&ua->rate_feedback_wait);
init_waitqueue_head(&ua->alsa_playback_wait);
--
2.17.2
prev parent reply other threads:[~2019-02-24 15:11 UTC|newest]
Thread overview: 68+ messages / expand[flat|nested] mbox.gz Atom feed top
2019-02-24 15:07 [MODERATED] [PATCH v6 00/43] MDSv6 Andi Kleen
2019-02-24 15:07 ` [MODERATED] [PATCH v6 01/43] MDSv6 Andi Kleen
2019-02-24 15:07 ` [MODERATED] [PATCH v6 02/43] MDSv6 Andi Kleen
2019-02-24 15:07 ` [MODERATED] [PATCH v6 03/43] MDSv6 Andi Kleen
2019-02-24 15:07 ` [MODERATED] [PATCH v6 04/43] MDSv6 Andi Kleen
2019-02-24 15:07 ` [MODERATED] [PATCH v6 05/43] MDSv6 Andi Kleen
2019-02-24 15:07 ` [MODERATED] [PATCH v6 06/43] MDSv6 Andi Kleen
2019-02-24 15:07 ` [MODERATED] [PATCH v6 07/43] MDSv6 Andi Kleen
2019-02-24 15:07 ` [MODERATED] [PATCH v6 08/43] MDSv6 Andi Kleen
2019-02-24 15:07 ` [MODERATED] [PATCH v6 09/43] MDSv6 Andi Kleen
2019-02-24 15:07 ` [MODERATED] [PATCH v6 10/43] MDSv6 Andi Kleen
2019-02-25 16:11 ` [MODERATED] " Greg KH
2019-02-25 16:42 ` Andi Kleen
2019-02-25 16:30 ` Greg KH
2019-02-25 16:41 ` [MODERATED] Encrypted Message Jon Masters
2019-02-25 16:58 ` [MODERATED] Re: [PATCH v6 10/43] MDSv6 Andi Kleen
2019-02-25 17:18 ` Dave Hansen
2019-02-24 15:07 ` [MODERATED] [PATCH v6 11/43] MDSv6 Andi Kleen
2019-02-24 15:07 ` [MODERATED] [PATCH v6 12/43] MDSv6 Andi Kleen
2019-02-24 15:07 ` [MODERATED] [PATCH v6 13/43] MDSv6 Andi Kleen
2019-02-24 15:07 ` [MODERATED] [PATCH v6 14/43] MDSv6 Andi Kleen
2019-02-24 15:07 ` [MODERATED] [PATCH v6 15/43] MDSv6 Andi Kleen
2019-02-24 15:07 ` [MODERATED] [PATCH v6 16/43] MDSv6 Andi Kleen
2019-02-24 15:07 ` [MODERATED] [PATCH v6 17/43] MDSv6 Andi Kleen
2019-02-24 15:07 ` [MODERATED] [PATCH v6 18/43] MDSv6 Andi Kleen
2019-02-24 15:07 ` [MODERATED] [PATCH v6 19/43] MDSv6 Andi Kleen
2019-02-24 15:07 ` [MODERATED] [PATCH v6 20/43] MDSv6 Andi Kleen
2019-02-24 15:07 ` [MODERATED] [PATCH v6 21/43] MDSv6 Andi Kleen
2019-02-24 15:07 ` [MODERATED] [PATCH v6 22/43] MDSv6 Andi Kleen
2019-02-24 15:07 ` [MODERATED] [PATCH v6 23/43] MDSv6 Andi Kleen
2019-02-24 15:07 ` [MODERATED] [PATCH v6 24/43] MDSv6 Andi Kleen
2019-02-24 15:07 ` [MODERATED] [PATCH v6 25/43] MDSv6 Andi Kleen
2019-02-24 15:07 ` [MODERATED] [PATCH v6 26/43] MDSv6 Andi Kleen
2019-02-24 15:07 ` [MODERATED] [PATCH v6 27/43] MDSv6 Andi Kleen
2019-02-24 15:07 ` [MODERATED] [PATCH v6 28/43] MDSv6 Andi Kleen
2019-02-24 15:07 ` [MODERATED] [PATCH v6 29/43] MDSv6 Andi Kleen
2019-02-24 15:07 ` [MODERATED] [PATCH v6 30/43] MDSv6 Andi Kleen
2019-02-24 15:07 ` [MODERATED] [PATCH v6 31/43] MDSv6 Andi Kleen
2019-02-25 15:19 ` [MODERATED] " Greg KH
2019-02-25 15:34 ` Andi Kleen
2019-02-25 15:49 ` Greg KH
2019-02-25 15:52 ` [MODERATED] Encrypted Message Jon Masters
2019-02-25 16:00 ` [MODERATED] " Greg KH
2019-02-25 16:19 ` [MODERATED] " Jon Masters
2019-02-25 16:19 ` [MODERATED] Re: [PATCH v6 31/43] MDSv6 Andi Kleen
2019-02-25 16:24 ` mark gross
2019-02-25 16:24 ` Andi Kleen
2019-02-24 15:07 ` [MODERATED] [PATCH v6 32/43] MDSv6 Andi Kleen
2019-02-24 15:07 ` [MODERATED] [PATCH v6 33/43] MDSv6 Andi Kleen
2019-02-24 15:07 ` [MODERATED] [PATCH v6 34/43] MDSv6 Andi Kleen
2019-02-24 15:07 ` [MODERATED] [PATCH v6 35/43] MDSv6 Andi Kleen
2019-02-24 15:07 ` [MODERATED] [FROZEN] [PATCH v6 36/43] MDSv6 Andi Kleen
2019-02-24 15:07 ` [MODERATED] [PATCH v6 37/43] MDSv6 Andi Kleen
2019-02-24 15:07 ` [MODERATED] [PATCH v6 38/43] MDSv6 Andi Kleen
2019-02-24 15:07 ` [MODERATED] [PATCH v6 39/43] MDSv6 Andi Kleen
2019-02-25 15:26 ` [MODERATED] " Greg KH
2019-02-25 16:28 ` Andi Kleen
2019-02-25 16:47 ` Greg KH
2019-02-25 17:05 ` Andi Kleen
2019-02-25 17:49 ` Greg KH
2019-02-25 18:10 ` Andi Kleen
2019-02-25 20:11 ` Greg KH
2019-02-25 21:00 ` Greg KH
2019-02-25 21:19 ` Andi Kleen
2019-02-24 15:07 ` [MODERATED] [PATCH v6 40/43] MDSv6 Andi Kleen
2019-02-24 15:07 ` [MODERATED] [PATCH v6 41/43] MDSv6 Andi Kleen
2019-02-24 15:07 ` [MODERATED] [PATCH v6 42/43] MDSv6 Andi Kleen
2019-02-24 15:07 ` Andi Kleen [this message]
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=f4debb8df0411abde80d20f400d862c7cc0c8ad2.1551019522.git.ak@linux.intel.com \
--to=andi@firstfloor.org \
--cc=ak@linux.intel.com \
--cc=speck@linutronix.de \
/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: link
Be 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.