Почему нам нужно вызывать local_bh_disabled () перед вызовом функции conn_request ()? - PullRequest
1 голос
/ 14 июля 2020

Я не могу понять, какова роль функции local_bh_disable(), которая вызывается перед функцией conn_request() здесь . Означает ли это, что только один процесс может получить доступ к этому разделу в данный момент (какая-то блокировка)? Я спрашиваю об этом, потому что я хочу удалить некоторые записи из таблицы ehash после вызова conn_request, но я не знаю, должен ли я делать это внутри этого раздела или нет.

if (th->syn) {
    if (th->fin)
        goto discard;
    /* It is possible that we process SYN packets from backlog,
     * so we need to make sure to disable BH right there.
     */
    local_bh_disable();
    acceptable = icsk->icsk_af_ops->conn_request(sk, skb) >= 0;
    local_bh_enable();

    if (!acceptable)
        return 1;
    consume_skb(skb);
    return 0;
}

PS: Из исходного кода Linux ядра 4.15

...