treewide: setup_timer() -> timer_setup() (2 field)
This converts all remaining setup_timer() calls that use a nested field to reach a struct timer_list. Coccinelle does not have an easy way to match multiple fields, so a new script is needed to change the matches of "&_E->_timer" into "&_E->_field1._timer" in all the rules. spatch --very-quiet --all-includes --include-headers \ -I ./arch/x86/include -I ./arch/x86/include/generated \ -I ./include -I ./arch/x86/include/uapi \ -I ./arch/x86/include/generated/uapi -I ./include/uapi \ -I ./include/generated/uapi --include ./include/linux/kconfig.h \ --dir . \ --cocci-file ~/src/data/timer_setup-2fields.cocci @fix_address_of depends@ expression e; @@ setup_timer( -&(e) +&e , ...) // Update any raw setup_timer() usages that have a NULL callback, but // would otherwise match change_timer_function_usage, since the latter // will update all function assignments done in the face of a NULL // function initialization in setup_timer(). @change_timer_function_usage_NULL@ expression _E; identifier _field1; identifier _timer; type _cast_data; @@ ( -setup_timer(&_E->_field1._timer, NULL, _E); +timer_setup(&_E->_field1._timer, NULL, 0); | -setup_timer(&_E->_field1._timer, NULL, (_cast_data)_E); +timer_setup(&_E->_field1._timer, NULL, 0); | -setup_timer(&_E._field1._timer, NULL, &_E); +timer_setup(&_E._field1._timer, NULL, 0); | -setup_timer(&_E._field1._timer, NULL, (_cast_data)&_E); +timer_setup(&_E._field1._timer, NULL, 0); ) @change_timer_function_usage@ expression _E; identifier _field1; identifier _timer; struct timer_list _stl; identifier _callback; type _cast_func, _cast_data; @@ ( -setup_timer(&_E->_field1._timer, _callback, _E); +timer_setup(&_E->_field1._timer, _callback, 0); | -setup_timer(&_E->_field1._timer, &_callback, _E); +timer_setup(&_E->_field1._timer, _callback, 0); | -setup_timer(&_E->_field1._timer, _callback, (_cast_data)_E); +timer_setup(&_E->_field1._timer, _callback, 0); | -setup_timer(&_E->_field1._timer, &_callback, (_cast_data)_E); +timer_setup(&_E->_field1._timer, _callback, 0); | -setup_timer(&_E->_field1._timer, (_cast_func)_callback, _E); +timer_setup(&_E->_field1._timer, _callback, 0); | -setup_timer(&_E->_field1._timer, (_cast_func)&_callback, _E); +timer_setup(&_E->_field1._timer, _callback, 0); | -setup_timer(&_E->_field1._timer, (_cast_func)_callback, (_cast_data)_E); +timer_setup(&_E->_field1._timer, _callback, 0); | -setup_timer(&_E->_field1._timer, (_cast_func)&_callback, (_cast_data)_E); +timer_setup(&_E->_field1._timer, _callback, 0); | -setup_timer(&_E._field1._timer, _callback, (_cast_data)_E); +timer_setup(&_E._field1._timer, _callback, 0); | -setup_timer(&_E._field1._timer, _callback, (_cast_data)&_E); +timer_setup(&_E._field1._timer, _callback, 0); | -setup_timer(&_E._field1._timer, &_callback, (_cast_data)_E); +timer_setup(&_E._field1._timer, _callback, 0); | -setup_timer(&_E._field1._timer, &_callback, (_cast_data)&_E); +timer_setup(&_E._field1._timer, _callback, 0); | -setup_timer(&_E._field1._timer, (_cast_func)_callback, (_cast_data)_E); +timer_setup(&_E._field1._timer, _callback, 0); | -setup_timer(&_E._field1._timer, (_cast_func)_callback, (_cast_data)&_E); +timer_setup(&_E._field1._timer, _callback, 0); | -setup_timer(&_E._field1._timer, (_cast_func)&_callback, (_cast_data)_E); +timer_setup(&_E._field1._timer, _callback, 0); | -setup_timer(&_E._field1._timer, (_cast_func)&_callback, (_cast_data)&_E); +timer_setup(&_E._field1._timer, _callback, 0); | _E->_field1._timer@_stl.function = _callback; | _E->_field1._timer@_stl.function = &_callback; | _E->_field1._timer@_stl.function = (_cast_func)_callback; | _E->_field1._timer@_stl.function = (_cast_func)&_callback; | _E._field1._timer@_stl.function = _callback; | _E._field1._timer@_stl.function = &_callback; | _E._field1._timer@_stl.function = (_cast_func)_callback; | _E._field1._timer@_stl.function = (_cast_func)&_callback; ) // callback(unsigned long arg) @change_callback_handle_cast depends on change_timer_function_usage@ identifier change_timer_function_usage._callback; identifier change_timer_function_usage._field1; identifier change_timer_function_usage._timer; type _origtype; identifier _origarg; type _handletype; identifier _handle; @@ void _callback( -_origtype _origarg +struct timer_list *t ) { ( ... when != _origarg _handletype *_handle = -(_handletype *)_origarg; +from_timer(_handle, t, _field1._timer); ... when != _origarg | ... when != _origarg _handletype *_handle = -(void *)_origarg; +from_timer(_handle, t, _field1._timer); ... when != _origarg | ... when != _origarg _handletype *_handle; ... when != _handle _handle = -(_handletype *)_origarg; +from_timer(_handle, t, _field1._timer); ... when != _origarg | ... when != _origarg _handletype *_handle; ... when != _handle _handle = -(void *)_origarg; +from_timer(_handle, t, _field1._timer); ... when != _origarg ) } // callback(unsigned long arg) without existing variable @change_callback_handle_cast_no_arg depends on change_timer_function_usage && !change_callback_handle_cast@ identifier change_timer_function_usage._callback; identifier change_timer_function_usage._field1; identifier change_timer_function_usage._timer; type _origtype; identifier _origarg; type _handletype; @@ void _callback( -_origtype _origarg +struct timer_list *t ) { + _handletype *_origarg = from_timer(_origarg, t, _field1._timer); + ... when != _origarg - (_handletype *)_origarg + _origarg ... when != _origarg } // Avoid already converted callbacks. @match_callback_converted depends on change_timer_function_usage && !change_callback_handle_cast && !change_callback_handle_cast_no_arg@ identifier change_timer_function_usage._callback; identifier t; @@ void _callback(struct timer_list *t) { ... } // callback(struct something *handle) @change_callback_handle_arg depends on change_timer_function_usage && !match_callback_converted && !change_callback_handle_cast && !change_callback_handle_cast_no_arg@ identifier change_timer_function_usage._callback; identifier change_timer_function_usage._field1; identifier change_timer_function_usage._timer; type _handletype; identifier _handle; @@ void _callback( -_handletype *_handle +struct timer_list *t ) { + _handletype *_handle = from_timer(_handle, t, _field1._timer); ... } // If change_callback_handle_arg ran on an empty function, remove // the added handler. @unchange_callback_handle_arg depends on change_timer_function_usage && change_callback_handle_arg@ identifier change_timer_function_usage._callback; identifier change_timer_function_usage._field1; identifier change_timer_function_usage._timer; type _handletype; identifier _handle; identifier t; @@ void _callback(struct timer_list *t) { - _handletype *_handle = from_timer(_handle, t, _field1._timer); } // We only want to refactor the setup_timer() data argument if we've found // the matching callback. This undoes changes in change_timer_function_usage. @unchange_timer_function_usage depends on change_timer_function_usage && !change_callback_handle_cast && !change_callback_handle_cast_no_arg && !change_callback_handle_arg@ expression change_timer_function_usage._E; identifier change_timer_function_usage._field1; identifier change_timer_function_usage._timer; identifier change_timer_function_usage._callback; type change_timer_function_usage._cast_data; @@ ( -timer_setup(&_E->_field1._timer, _callback, 0); +setup_timer(&_E->_field1._timer, _callback, (_cast_data)_E); | -timer_setup(&_E._field1._timer, _callback, 0); +setup_timer(&_E._field1._timer, _callback, (_cast_data)&_E); ) // If we fixed a callback from a .function assignment, fix the // assignment cast now. @change_timer_function_assignment depends on change_timer_function_usage && (change_callback_handle_cast || change_callback_handle_cast_no_arg || change_callback_handle_arg)@ expression change_timer_function_usage._E; identifier change_timer_function_usage._field1; identifier change_timer_function_usage._timer; identifier change_timer_function_usage._callback; type _cast_func; typedef TIMER_FUNC_TYPE; @@ ( _E->_field1._timer.function = -_callback +(TIMER_FUNC_TYPE)_callback ; | _E->_field1._timer.function = -&_callback +(TIMER_FUNC_TYPE)_callback ; | _E->_field1._timer.function = -(_cast_func)_callback; +(TIMER_FUNC_TYPE)_callback ; | _E->_field1._timer.function = -(_cast_func)&_callback +(TIMER_FUNC_TYPE)_callback ; | _E._field1._timer.function = -_callback +(TIMER_FUNC_TYPE)_callback ; | _E._field1._timer.function = -&_callback; +(TIMER_FUNC_TYPE)_callback ; | _E._field1._timer.function = -(_cast_func)_callback +(TIMER_FUNC_TYPE)_callback ; | _E._field1._timer.function = -(_cast_func)&_callback +(TIMER_FUNC_TYPE)_callback ; ) // Sometimes timer functions are called directly. Replace matched args. @change_timer_function_calls depends on change_timer_function_usage && (change_callback_handle_cast || change_callback_handle_cast_no_arg || change_callback_handle_arg)@ expression _E; identifier change_timer_function_usage._field1; identifier change_timer_function_usage._timer; identifier change_timer_function_usage._callback; type _cast_data; @@ _callback( ( -(_cast_data)_E +&_E->_field1._timer | -(_cast_data)&_E +&_E._field1._timer | -_E +&_E->_field1._timer ) ) // If a timer has been configured without a data argument, it can be // converted without regard to the callback argument, since it is unused. @match_timer_function_unused_data@ expression _E; identifier _field1; identifier _timer; identifier _callback; @@ ( -setup_timer(&_E->_field1._timer, _callback, 0); +timer_setup(&_E->_field1._timer, _callback, 0); | -setup_timer(&_E->_field1._timer, _callback, 0L); +timer_setup(&_E->_field1._timer, _callback, 0); | -setup_timer(&_E->_field1._timer, _callback, 0UL); +timer_setup(&_E->_field1._timer, _callback, 0); | -setup_timer(&_E._field1._timer, _callback, 0); +timer_setup(&_E._field1._timer, _callback, 0); | -setup_timer(&_E._field1._timer, _callback, 0L); +timer_setup(&_E._field1._timer, _callback, 0); | -setup_timer(&_E._field1._timer, _callback, 0UL); +timer_setup(&_E._field1._timer, _callback, 0); | -setup_timer(&_field1._timer, _callback, 0); +timer_setup(&_field1._timer, _callback, 0); | -setup_timer(&_field1._timer, _callback, 0L); +timer_setup(&_field1._timer, _callback, 0); | -setup_timer(&_field1._timer, _callback, 0UL); +timer_setup(&_field1._timer, _callback, 0); | -setup_timer(_field1._timer, _callback, 0); +timer_setup(_field1._timer, _callback, 0); | -setup_timer(_field1._timer, _callback, 0L); +timer_setup(_field1._timer, _callback, 0); | -setup_timer(_field1._timer, _callback, 0UL); +timer_setup(_field1._timer, _callback, 0); ) @change_callback_unused_data depends on match_timer_function_unused_data@ identifier match_timer_function_unused_data._callback; type _origtype; identifier _origarg; @@ void _callback( -_origtype _origarg +struct timer_list *unused ) { ... when != _origarg } Signed-off-by: Kees Cook <keescook@chromium.org>
This commit is contained in:
parent
e99e88a9d2
commit
86cb30ec07
@ -599,9 +599,9 @@ static void arm_next_watchdog(struct kvm_vcpu *vcpu)
|
||||
spin_unlock_irqrestore(&vcpu->arch.wdt_lock, flags);
|
||||
}
|
||||
|
||||
void kvmppc_watchdog_func(unsigned long data)
|
||||
void kvmppc_watchdog_func(struct timer_list *t)
|
||||
{
|
||||
struct kvm_vcpu *vcpu = (struct kvm_vcpu *)data;
|
||||
struct kvm_vcpu *vcpu = from_timer(vcpu, t, arch.wdt_timer);
|
||||
u32 tsr, new_tsr;
|
||||
int final;
|
||||
|
||||
@ -1412,8 +1412,7 @@ int kvmppc_subarch_vcpu_init(struct kvm_vcpu *vcpu)
|
||||
{
|
||||
/* setup watchdog timer once */
|
||||
spin_lock_init(&vcpu->arch.wdt_lock);
|
||||
setup_timer(&vcpu->arch.wdt_timer, kvmppc_watchdog_func,
|
||||
(unsigned long)vcpu);
|
||||
timer_setup(&vcpu->arch.wdt_timer, kvmppc_watchdog_func, 0);
|
||||
|
||||
/*
|
||||
* Clear DBSR.MRR to avoid guest debug interrupt as
|
||||
|
@ -203,9 +203,9 @@ static int creg_queue_cmd(struct rsxx_cardinfo *card,
|
||||
return 0;
|
||||
}
|
||||
|
||||
static void creg_cmd_timed_out(unsigned long data)
|
||||
static void creg_cmd_timed_out(struct timer_list *t)
|
||||
{
|
||||
struct rsxx_cardinfo *card = (struct rsxx_cardinfo *) data;
|
||||
struct rsxx_cardinfo *card = from_timer(card, t, creg_ctrl.cmd_timer);
|
||||
struct creg_cmd *cmd;
|
||||
|
||||
spin_lock(&card->creg_ctrl.lock);
|
||||
@ -745,8 +745,7 @@ int rsxx_creg_setup(struct rsxx_cardinfo *card)
|
||||
mutex_init(&card->creg_ctrl.reset_lock);
|
||||
INIT_LIST_HEAD(&card->creg_ctrl.queue);
|
||||
spin_lock_init(&card->creg_ctrl.lock);
|
||||
setup_timer(&card->creg_ctrl.cmd_timer, creg_cmd_timed_out,
|
||||
(unsigned long) card);
|
||||
timer_setup(&card->creg_ctrl.cmd_timer, creg_cmd_timed_out, 0);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
@ -268,9 +268,10 @@ void amdgpu_fence_process(struct amdgpu_ring *ring)
|
||||
*
|
||||
* Checks for fence activity.
|
||||
*/
|
||||
static void amdgpu_fence_fallback(unsigned long arg)
|
||||
static void amdgpu_fence_fallback(struct timer_list *t)
|
||||
{
|
||||
struct amdgpu_ring *ring = (void *)arg;
|
||||
struct amdgpu_ring *ring = from_timer(ring, t,
|
||||
fence_drv.fallback_timer);
|
||||
|
||||
amdgpu_fence_process(ring);
|
||||
}
|
||||
@ -422,8 +423,7 @@ int amdgpu_fence_driver_init_ring(struct amdgpu_ring *ring,
|
||||
atomic_set(&ring->fence_drv.last_seq, 0);
|
||||
ring->fence_drv.initialized = false;
|
||||
|
||||
setup_timer(&ring->fence_drv.fallback_timer, amdgpu_fence_fallback,
|
||||
(unsigned long)ring);
|
||||
timer_setup(&ring->fence_drv.fallback_timer, amdgpu_fence_fallback, 0);
|
||||
|
||||
ring->fence_drv.num_fences_mask = num_hw_submission * 2 - 1;
|
||||
spin_lock_init(&ring->fence_drv.lock);
|
||||
|
@ -130,9 +130,9 @@ static void handle_catas(struct mthca_dev *dev)
|
||||
spin_unlock_irqrestore(&catas_lock, flags);
|
||||
}
|
||||
|
||||
static void poll_catas(unsigned long dev_ptr)
|
||||
static void poll_catas(struct timer_list *t)
|
||||
{
|
||||
struct mthca_dev *dev = (struct mthca_dev *) dev_ptr;
|
||||
struct mthca_dev *dev = from_timer(dev, t, catas_err.timer);
|
||||
int i;
|
||||
|
||||
for (i = 0; i < dev->catas_err.size; ++i)
|
||||
@ -149,7 +149,7 @@ void mthca_start_catas_poll(struct mthca_dev *dev)
|
||||
{
|
||||
phys_addr_t addr;
|
||||
|
||||
setup_timer(&dev->catas_err.timer, poll_catas, (unsigned long)dev);
|
||||
timer_setup(&dev->catas_err.timer, poll_catas, 0);
|
||||
dev->catas_err.map = NULL;
|
||||
|
||||
addr = pci_resource_start(dev->pdev, 0) +
|
||||
|
@ -301,8 +301,9 @@ reset_hfcpci(struct hfc_pci *hc)
|
||||
* Timer function called when kernel timer expires
|
||||
*/
|
||||
static void
|
||||
hfcpci_Timer(struct hfc_pci *hc)
|
||||
hfcpci_Timer(struct timer_list *t)
|
||||
{
|
||||
struct hfc_pci *hc = from_timer(hc, t, hw.timer);
|
||||
hc->hw.timer.expires = jiffies + 75;
|
||||
/* WD RESET */
|
||||
/*
|
||||
@ -2042,7 +2043,7 @@ setup_hw(struct hfc_pci *hc)
|
||||
Write_hfc(hc, HFCPCI_INT_M1, hc->hw.int_m1);
|
||||
/* At this point the needed PCI config is done */
|
||||
/* fifos are still not enabled */
|
||||
setup_timer(&hc->hw.timer, (void *)hfcpci_Timer, (long)hc);
|
||||
timer_setup(&hc->hw.timer, hfcpci_Timer, 0);
|
||||
/* default PCM master */
|
||||
test_and_set_bit(HFC_CFG_MASTER, &hc->cfg);
|
||||
return 0;
|
||||
|
@ -339,9 +339,9 @@ static int restart_video_queue(struct viu_dmaqueue *vidq)
|
||||
}
|
||||
}
|
||||
|
||||
static void viu_vid_timeout(unsigned long data)
|
||||
static void viu_vid_timeout(struct timer_list *t)
|
||||
{
|
||||
struct viu_dev *dev = (struct viu_dev *)data;
|
||||
struct viu_dev *dev = from_timer(dev, t, vidq.timeout);
|
||||
struct viu_buf *buf;
|
||||
struct viu_dmaqueue *vidq = &dev->vidq;
|
||||
|
||||
@ -1466,8 +1466,7 @@ static int viu_of_probe(struct platform_device *op)
|
||||
viu_dev->decoder = v4l2_i2c_new_subdev(&viu_dev->v4l2_dev, ad,
|
||||
"saa7113", VIU_VIDEO_DECODER_ADDR, NULL);
|
||||
|
||||
setup_timer(&viu_dev->vidq.timeout, viu_vid_timeout,
|
||||
(unsigned long)viu_dev);
|
||||
timer_setup(&viu_dev->vidq.timeout, viu_vid_timeout, 0);
|
||||
viu_dev->std = V4L2_STD_NTSC_M;
|
||||
viu_dev->first = 1;
|
||||
|
||||
|
@ -123,9 +123,9 @@ struct enic_rfs_fltr_node *htbl_fltr_search(struct enic *enic, u16 fltr_id)
|
||||
}
|
||||
|
||||
#ifdef CONFIG_RFS_ACCEL
|
||||
void enic_flow_may_expire(unsigned long data)
|
||||
void enic_flow_may_expire(struct timer_list *t)
|
||||
{
|
||||
struct enic *enic = (struct enic *)data;
|
||||
struct enic *enic = from_timer(enic, t, rfs_h.rfs_may_expire);
|
||||
bool res;
|
||||
int j;
|
||||
|
||||
|
@ -16,12 +16,11 @@ struct enic_rfs_fltr_node *htbl_fltr_search(struct enic *enic, u16 fltr_id);
|
||||
#ifdef CONFIG_RFS_ACCEL
|
||||
int enic_rx_flow_steer(struct net_device *dev, const struct sk_buff *skb,
|
||||
u16 rxq_index, u32 flow_id);
|
||||
void enic_flow_may_expire(unsigned long data);
|
||||
void enic_flow_may_expire(struct timer_list *t);
|
||||
|
||||
static inline void enic_rfs_timer_start(struct enic *enic)
|
||||
{
|
||||
setup_timer(&enic->rfs_h.rfs_may_expire, enic_flow_may_expire,
|
||||
(unsigned long)enic);
|
||||
timer_setup(&enic->rfs_h.rfs_may_expire, enic_flow_may_expire, 0);
|
||||
mod_timer(&enic->rfs_h.rfs_may_expire, jiffies + HZ/4);
|
||||
}
|
||||
|
||||
|
@ -164,9 +164,10 @@ enum iwl_antenna_ok iwl_rx_ant_restriction(struct iwl_priv *priv)
|
||||
* without doing anything, driver should continue the 5 seconds timer
|
||||
* to wake up uCode for temperature check until temperature drop below CT
|
||||
*/
|
||||
static void iwl_tt_check_exit_ct_kill(unsigned long data)
|
||||
static void iwl_tt_check_exit_ct_kill(struct timer_list *t)
|
||||
{
|
||||
struct iwl_priv *priv = (struct iwl_priv *)data;
|
||||
struct iwl_priv *priv = from_timer(priv, t,
|
||||
thermal_throttle.ct_kill_exit_tm);
|
||||
struct iwl_tt_mgmt *tt = &priv->thermal_throttle;
|
||||
unsigned long flags;
|
||||
|
||||
@ -214,9 +215,10 @@ static void iwl_perform_ct_kill_task(struct iwl_priv *priv,
|
||||
}
|
||||
}
|
||||
|
||||
static void iwl_tt_ready_for_ct_kill(unsigned long data)
|
||||
static void iwl_tt_ready_for_ct_kill(struct timer_list *t)
|
||||
{
|
||||
struct iwl_priv *priv = (struct iwl_priv *)data;
|
||||
struct iwl_priv *priv = from_timer(priv, t,
|
||||
thermal_throttle.ct_kill_waiting_tm);
|
||||
struct iwl_tt_mgmt *tt = &priv->thermal_throttle;
|
||||
|
||||
if (test_bit(STATUS_EXIT_PENDING, &priv->status))
|
||||
@ -612,10 +614,10 @@ void iwl_tt_initialize(struct iwl_priv *priv)
|
||||
memset(tt, 0, sizeof(struct iwl_tt_mgmt));
|
||||
|
||||
tt->state = IWL_TI_0;
|
||||
setup_timer(&priv->thermal_throttle.ct_kill_exit_tm,
|
||||
iwl_tt_check_exit_ct_kill, (unsigned long)priv);
|
||||
setup_timer(&priv->thermal_throttle.ct_kill_waiting_tm,
|
||||
iwl_tt_ready_for_ct_kill, (unsigned long)priv);
|
||||
timer_setup(&priv->thermal_throttle.ct_kill_exit_tm,
|
||||
iwl_tt_check_exit_ct_kill, 0);
|
||||
timer_setup(&priv->thermal_throttle.ct_kill_waiting_tm,
|
||||
iwl_tt_ready_for_ct_kill, 0);
|
||||
/* setup deferred ct kill work */
|
||||
INIT_WORK(&priv->tt_work, iwl_bg_tt_work);
|
||||
INIT_WORK(&priv->ct_enter, iwl_bg_ct_enter);
|
||||
|
@ -130,9 +130,9 @@ static void fw_dnld_over(struct nfcmrvl_private *priv, u32 error)
|
||||
nfc_fw_download_done(priv->ndev->nfc_dev, priv->fw_dnld.name, error);
|
||||
}
|
||||
|
||||
static void fw_dnld_timeout(unsigned long arg)
|
||||
static void fw_dnld_timeout(struct timer_list *t)
|
||||
{
|
||||
struct nfcmrvl_private *priv = (struct nfcmrvl_private *) arg;
|
||||
struct nfcmrvl_private *priv = from_timer(priv, t, fw_dnld.timer);
|
||||
|
||||
nfc_err(priv->dev, "FW loading timeout");
|
||||
priv->fw_dnld.state = STATE_RESET;
|
||||
@ -538,8 +538,7 @@ int nfcmrvl_fw_dnld_start(struct nci_dev *ndev, const char *firmware_name)
|
||||
}
|
||||
|
||||
/* Configure a timer for timeout */
|
||||
setup_timer(&priv->fw_dnld.timer, fw_dnld_timeout,
|
||||
(unsigned long) priv);
|
||||
timer_setup(&priv->fw_dnld.timer, fw_dnld_timeout, 0);
|
||||
mod_timer(&priv->fw_dnld.timer,
|
||||
jiffies + msecs_to_jiffies(FW_DNLD_TIMEOUT));
|
||||
|
||||
|
@ -677,7 +677,7 @@ int st_nci_se_io(struct nci_dev *ndev, u32 se_idx,
|
||||
}
|
||||
EXPORT_SYMBOL(st_nci_se_io);
|
||||
|
||||
static void st_nci_se_wt_timeout(unsigned long data)
|
||||
static void st_nci_se_wt_timeout(struct timer_list *t)
|
||||
{
|
||||
/*
|
||||
* No answer from the secure element
|
||||
@ -690,7 +690,7 @@ static void st_nci_se_wt_timeout(unsigned long data)
|
||||
*/
|
||||
/* hardware reset managed through VCC_UICC_OUT power supply */
|
||||
u8 param = 0x01;
|
||||
struct st_nci_info *info = (struct st_nci_info *) data;
|
||||
struct st_nci_info *info = from_timer(info, t, se_info.bwi_timer);
|
||||
|
||||
pr_debug("\n");
|
||||
|
||||
@ -708,9 +708,10 @@ static void st_nci_se_wt_timeout(unsigned long data)
|
||||
info->se_info.cb(info->se_info.cb_context, NULL, 0, -ETIME);
|
||||
}
|
||||
|
||||
static void st_nci_se_activation_timeout(unsigned long data)
|
||||
static void st_nci_se_activation_timeout(struct timer_list *t)
|
||||
{
|
||||
struct st_nci_info *info = (struct st_nci_info *) data;
|
||||
struct st_nci_info *info = from_timer(info, t,
|
||||
se_info.se_active_timer);
|
||||
|
||||
pr_debug("\n");
|
||||
|
||||
@ -725,12 +726,11 @@ int st_nci_se_init(struct nci_dev *ndev, struct st_nci_se_status *se_status)
|
||||
|
||||
init_completion(&info->se_info.req_completion);
|
||||
/* initialize timers */
|
||||
setup_timer(&info->se_info.bwi_timer, st_nci_se_wt_timeout,
|
||||
(unsigned long)info);
|
||||
timer_setup(&info->se_info.bwi_timer, st_nci_se_wt_timeout, 0);
|
||||
info->se_info.bwi_active = false;
|
||||
|
||||
setup_timer(&info->se_info.se_active_timer,
|
||||
st_nci_se_activation_timeout, (unsigned long)info);
|
||||
timer_setup(&info->se_info.se_active_timer,
|
||||
st_nci_se_activation_timeout, 0);
|
||||
info->se_info.se_active = false;
|
||||
|
||||
info->se_info.xch_error = false;
|
||||
|
@ -252,7 +252,7 @@ int st21nfca_hci_se_io(struct nfc_hci_dev *hdev, u32 se_idx,
|
||||
}
|
||||
EXPORT_SYMBOL(st21nfca_hci_se_io);
|
||||
|
||||
static void st21nfca_se_wt_timeout(unsigned long data)
|
||||
static void st21nfca_se_wt_timeout(struct timer_list *t)
|
||||
{
|
||||
/*
|
||||
* No answer from the secure element
|
||||
@ -265,7 +265,8 @@ static void st21nfca_se_wt_timeout(unsigned long data)
|
||||
*/
|
||||
/* hardware reset managed through VCC_UICC_OUT power supply */
|
||||
u8 param = 0x01;
|
||||
struct st21nfca_hci_info *info = (struct st21nfca_hci_info *) data;
|
||||
struct st21nfca_hci_info *info = from_timer(info, t,
|
||||
se_info.bwi_timer);
|
||||
|
||||
pr_debug("\n");
|
||||
|
||||
@ -283,9 +284,10 @@ static void st21nfca_se_wt_timeout(unsigned long data)
|
||||
info->se_info.cb(info->se_info.cb_context, NULL, 0, -ETIME);
|
||||
}
|
||||
|
||||
static void st21nfca_se_activation_timeout(unsigned long data)
|
||||
static void st21nfca_se_activation_timeout(struct timer_list *t)
|
||||
{
|
||||
struct st21nfca_hci_info *info = (struct st21nfca_hci_info *) data;
|
||||
struct st21nfca_hci_info *info = from_timer(info, t,
|
||||
se_info.se_active_timer);
|
||||
|
||||
pr_debug("\n");
|
||||
|
||||
@ -392,12 +394,11 @@ void st21nfca_se_init(struct nfc_hci_dev *hdev)
|
||||
|
||||
init_completion(&info->se_info.req_completion);
|
||||
/* initialize timers */
|
||||
setup_timer(&info->se_info.bwi_timer, st21nfca_se_wt_timeout,
|
||||
(unsigned long)info);
|
||||
timer_setup(&info->se_info.bwi_timer, st21nfca_se_wt_timeout, 0);
|
||||
info->se_info.bwi_active = false;
|
||||
|
||||
setup_timer(&info->se_info.se_active_timer,
|
||||
st21nfca_se_activation_timeout, (unsigned long)info);
|
||||
timer_setup(&info->se_info.se_active_timer,
|
||||
st21nfca_se_activation_timeout, 0);
|
||||
info->se_info.se_active = false;
|
||||
|
||||
info->se_info.count_pipes = 0;
|
||||
|
@ -565,9 +565,9 @@ static irqreturn_t sym53c8xx_intr(int irq, void *dev_id)
|
||||
/*
|
||||
* Linux entry point of the timer handler
|
||||
*/
|
||||
static void sym53c8xx_timer(unsigned long npref)
|
||||
static void sym53c8xx_timer(struct timer_list *t)
|
||||
{
|
||||
struct sym_hcb *np = (struct sym_hcb *)npref;
|
||||
struct sym_hcb *np = from_timer(np, t, s.timer);
|
||||
unsigned long flags;
|
||||
|
||||
spin_lock_irqsave(np->s.host->host_lock, flags);
|
||||
@ -1351,7 +1351,7 @@ static struct Scsi_Host *sym_attach(struct scsi_host_template *tpnt, int unit,
|
||||
/*
|
||||
* Start the timer daemon
|
||||
*/
|
||||
setup_timer(&np->s.timer, sym53c8xx_timer, (unsigned long)np);
|
||||
timer_setup(&np->s.timer, sym53c8xx_timer, 0);
|
||||
np->s.lasttime=0;
|
||||
sym_timer (np);
|
||||
|
||||
|
@ -70,7 +70,7 @@ static int fib6_walk_continue(struct fib6_walker *w);
|
||||
* result of redirects, path MTU changes, etc.
|
||||
*/
|
||||
|
||||
static void fib6_gc_timer_cb(unsigned long arg);
|
||||
static void fib6_gc_timer_cb(struct timer_list *t);
|
||||
|
||||
#define FOR_WALKERS(net, w) \
|
||||
list_for_each_entry(w, &(net)->ipv6.fib6_walkers, lh)
|
||||
@ -2026,9 +2026,11 @@ void fib6_run_gc(unsigned long expires, struct net *net, bool force)
|
||||
spin_unlock_bh(&net->ipv6.fib6_gc_lock);
|
||||
}
|
||||
|
||||
static void fib6_gc_timer_cb(unsigned long arg)
|
||||
static void fib6_gc_timer_cb(struct timer_list *t)
|
||||
{
|
||||
fib6_run_gc(0, (struct net *)arg, true);
|
||||
struct net *arg = from_timer(arg, t, ipv6.ip6_fib_timer);
|
||||
|
||||
fib6_run_gc(0, arg, true);
|
||||
}
|
||||
|
||||
static int __net_init fib6_net_init(struct net *net)
|
||||
@ -2043,7 +2045,7 @@ static int __net_init fib6_net_init(struct net *net)
|
||||
spin_lock_init(&net->ipv6.fib6_gc_lock);
|
||||
rwlock_init(&net->ipv6.fib6_walker_lock);
|
||||
INIT_LIST_HEAD(&net->ipv6.fib6_walkers);
|
||||
setup_timer(&net->ipv6.ip6_fib_timer, fib6_gc_timer_cb, (unsigned long)net);
|
||||
timer_setup(&net->ipv6.ip6_fib_timer, fib6_gc_timer_cb, 0);
|
||||
|
||||
net->ipv6.rt6_stats = kzalloc(sizeof(*net->ipv6.rt6_stats), GFP_KERNEL);
|
||||
if (!net->ipv6.rt6_stats)
|
||||
|
@ -184,9 +184,9 @@ report:
|
||||
nd->handler(nd);
|
||||
}
|
||||
|
||||
static void ncsi_channel_monitor(unsigned long data)
|
||||
static void ncsi_channel_monitor(struct timer_list *t)
|
||||
{
|
||||
struct ncsi_channel *nc = (struct ncsi_channel *)data;
|
||||
struct ncsi_channel *nc = from_timer(nc, t, monitor.timer);
|
||||
struct ncsi_package *np = nc->package;
|
||||
struct ncsi_dev_priv *ndp = np->ndp;
|
||||
struct ncsi_channel_mode *ncm;
|
||||
@ -313,8 +313,7 @@ struct ncsi_channel *ncsi_add_channel(struct ncsi_package *np, unsigned char id)
|
||||
nc->package = np;
|
||||
nc->state = NCSI_CHANNEL_INACTIVE;
|
||||
nc->monitor.enabled = false;
|
||||
setup_timer(&nc->monitor.timer,
|
||||
ncsi_channel_monitor, (unsigned long)nc);
|
||||
timer_setup(&nc->monitor.timer, ncsi_channel_monitor, 0);
|
||||
spin_lock_init(&nc->lock);
|
||||
INIT_LIST_HEAD(&nc->link);
|
||||
for (index = 0; index < NCSI_CAP_MAX; index++)
|
||||
|
Loading…
Reference in New Issue
Block a user