]> git.baikalelectronics.ru Git - kernel.git/commit
Merge branch 'bpfilter-fixes'
authorDavid S. Miller <davem@davemloft.net>
Sat, 12 Jan 2019 02:05:41 +0000 (18:05 -0800)
committerDavid S. Miller <davem@davemloft.net>
Sat, 12 Jan 2019 02:05:41 +0000 (18:05 -0800)
commit1de2b273d559b8df68eab6eed92f0bf2363dd4eb
tree5b8a9885880eb260a2bf885af0e32ad0bc19a90d
parent7a4e1deab6a63edafa41b2a832a6fa3a286675ad
parent502ec58fe777d734873cad9b3b88eb5faadc95d8
Merge branch 'bpfilter-fixes'

Taehee Yoo says:

====================
net: bpfilter: fix two bugs in bpfilter

This patches fix two bugs in the bpfilter_umh which are related in
iptables command.

The first patch adds an exit code for UMH process.
This provides an opportunity to cleanup members of the umh_info
to modules which use the UMH.
In order to identify UMH processes, a new flag PF_UMH is added.

The second patch makes the bpfilter_umh use UMH cleanup callback.

The third patch adds re-start routine for the bpfilter_umh.
The bpfilter_umh does not re-start after error occurred.
because there is no re-start routine in the module.

The fourth patch ensures that the bpfilter.ko module will not removed while
it's being used.
The bpfilter.ko is not protected by locks or module reference counter.
Therefore that can be removed while module is being used.
In order to protect that, mutex is used.

The first and second patch are preparation patches for the third and
fourth patch.

TEST #1
   while :
   do
modprobe bpfilter
kill -9 <pid of the bpfilter_umh>
iptables -vnL
   done

TEST #2
   while :
   do
iptables -I FORWARD -m string --string ap --algo kmp &
iptables -F &
modprobe -rv bpfilter &
   done

TEST #3
   while :
   do
modprobe bpfilter &
modprobe -rv bpfilter &
   done

The TEST1 makes a failure of iptables command.
This is fixed by the third patch.

The TEST2 makes a panic because of a race condition in the bpfilter_umh
module.
This is fixed by the fourth patch.

The TEST3 makes a double-create UMH process.
This is fixed by the third and fourth patch.

v4 :
 - declare the exit_umh() as static inline
 - check stop flag in the load_umh() to avoid a double-create UMH
v3 :
 - Avoid unnecessary list lookup for non-UMH processes
 - Add a new PF_UMH flag
v2 : add the first and second patch
v1 : Initial patch
====================

Signed-off-by: David S. Miller <davem@davemloft.net>