Sometimes a tasklet or timer might want to share data with another tasklet or timer.
Since a tasklet is never run on two CPUs at once, you don't need to worry about your tasklet being reentrant (running twice at once), even on SMP.
       If another tasklet/timer wants
       to share data with your tasklet or timer , you will both need to use
       spin_lock() and
       spin_unlock() calls.  
       spin_lock_bh() is
       unnecessary here, as you are already in a tasklet, and
       none will be run on the same CPU.