Often a softirq might want to share data with itself or a tasklet/timer.
The same softirq can run on the other CPUs: you can use a per-CPU array (see the section called “Per-CPU Data”) for better performance. If you're going so far as to use a softirq, you probably care about scalable performance enough to justify the extra complexity.
You'll need to use spin_lock()
and
spin_unlock()
for shared data.