Project

General

Profile

Actions

Bug #124

closed

batman-adv 0.2-alpha: possible[tm] regression in packet aggregation

Added by Simon Wunderlich almost 16 years ago. Updated almost 8 years ago.

Status:
Closed
Priority:
Normal
Assignee:
-
Target version:
Start date:
Due date:
% Done:

0%

Estimated time:

Description

Assume we have 2 "threads":

Thread1:

add_packet_list()

-> set_outstanding_packets_timer()

calls spin_trylock(&packets_timer_lock), acquires the lock, and calls

-> cancel_delayed_work_sync(&send_outstanding_packets_wq);

Thread 2:

Workqueue threads, calls

-> set_oustanding_packets()

Assumption:

Thread 2 jumps between the spin_trylock() and cancel_delayed_work_sync(). Then Thread 1 holds, Thread 2 tries to acquire it and waits. Thread 1 then waits for Thread 2 to complete within cancel_delayed_work_sync(). This is a deadlock/lifelock.

Its not very likely that it happens, but it might happen, so i'm opening this ticket. ;)

Actions

Also available in: Atom PDF