Skip to content

Commit

Permalink
tipc: Add missing spinlock in name table display code
Browse files Browse the repository at this point in the history
This patch ensures that the display code that traverses the
publication lists belonging to a name table entry take its
associated spinlock, to protect against a possible change to
one of its "head of list" pointers caused by a simultaneous
name table lookup operation by another thread of control.

Signed-off-by: Allan Stephens <allan.stephens@windriver.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
  • Loading branch information
Allan Stephens authored and David S. Miller committed Jun 5, 2008
1 parent 0f15d36 commit 307fdf5
Showing 1 changed file with 3 additions and 1 deletion.
4 changes: 3 additions & 1 deletion net/tipc/name_table.c
Original file line number Diff line number Diff line change
Expand Up @@ -74,7 +74,7 @@ struct sub_seq {
* @first_free: array index of first unused sub-sequence entry
* @ns_list: links to adjacent name sequences in hash chain
* @subscriptions: list of subscriptions for this 'type'
* @lock: spinlock controlling access to name sequence structure
* @lock: spinlock controlling access to publication lists of all sub-sequences
*/

struct name_seq {
Expand Down Expand Up @@ -918,7 +918,9 @@ static void nameseq_list(struct name_seq *seq, struct print_buf *buf, u32 depth,
for (sseq = seq->sseqs; sseq != &seq->sseqs[seq->first_free]; sseq++) {
if ((lowbound <= sseq->upper) && (upbound >= sseq->lower)) {
tipc_printf(buf, "%s ", typearea);
spin_lock_bh(&seq->lock);
subseq_list(sseq, buf, depth, index);
spin_unlock_bh(&seq->lock);
sprintf(typearea, "%10s", " ");
}
}
Expand Down

0 comments on commit 307fdf5

Please sign in to comment.