Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

build: fallthrough issue fixed #5

Open
wants to merge 1 commit into
base: master
Choose a base branch
from

Conversation

mehdilauters
Copy link

A build issue was introduced on some platforms by the commit 49d6983.
The fallthrough keyword was introduced although it is a C++17 only
keyword.

This commit only revert some lines in the src/compat/siphash/siphash.c
file.

A build issue was introduced on some platforms by the commit 49d6983.
The fallthrough keyword was introduced although it is a C++17 only
keyword.

This commit only revert some lines in the src/compat/siphash/siphash.c
file.
mehdilauters added a commit to mehdilauters/synology-wireguard that referenced this pull request Feb 9, 2022
A build issue was introduced on the wiregard-linux-compat codebase.
The fix has been requested for a merge on the project repository
WireGuard/wireguard-linux-compat#5

Waiting it to be merged, a patch was added to this project to locally
fix the problem
@zx2c4-bot zx2c4-bot force-pushed the master branch 3 times, most recently from 7cd1d2e to ffb8cd6 Compare March 2, 2022 23:10
@zx2c4-bot zx2c4-bot force-pushed the master branch 3 times, most recently from 4626f5e to f9d9b4d Compare April 14, 2022 12:49
@chrisjbillington
Copy link

I am seeing this issue compiling with gcc 9.4, which is the version of gcc on Ubuntu 20.04, and which defaults to C++ 14.

This patch fixed the problem for me.

sebthom pushed a commit to vegardit/synology-wireguard that referenced this pull request Nov 13, 2022
A build issue was introduced on the wiregard-linux-compat codebase.
The fix has been requested for a merge on the project repository
WireGuard/wireguard-linux-compat#5

Waiting it to be merged, a patch was added to this project to locally
fix the problem
sebthom pushed a commit to vegardit/synology-wireguard that referenced this pull request Nov 14, 2022
A build issue was introduced on the wiregard-linux-compat codebase.
The fix has been requested for a merge on the project repository
WireGuard/wireguard-linux-compat#5

Waiting it to be merged, a patch was added to this project to locally
fix the problem
syphyr pushed a commit to syphyr/wireguard-linux-compat that referenced this pull request Apr 10, 2024
…pty list

[ Upstream commit 55b6c738673871c9b0edae05d0c97995c1ff08c4 ]

If all peers are removed via wg_peer_remove_all(), rather than setting
peer_list to empty, the peer is added to a temporary list with a head on
the stack of wg_peer_remove_all(). If a netlink dump is resumed and the
cursored peer is one that has been removed via wg_peer_remove_all(), it
will iterate from that peer and then attempt to dump freed peers.

Fix this by instead checking peer->is_dead, which was explictly created
for this purpose. Also move up the device_update_lock lockdep assertion,
since reading is_dead relies on that.

It can be reproduced by a small script like:

    echo "Setting config..."
    ip link add dev wg0 type wireguard
    wg setconf wg0 /big-config
    (
            while true; do
                    echo "Showing config..."
                    wg showconf wg0 > /dev/null
            done
    ) &
    sleep 4
    wg setconf wg0 <(printf "[Peer]\nPublicKey=$(wg genkey)\n")

Resulting in:

    BUG: KASAN: slab-use-after-free in __lock_acquire+0x182a/0x1b20
    Read of size 8 at addr ffff88811956ec70 by task wg/59
    CPU: 2 PID: 59 Comm: wg Not tainted 6.8.0-rc2-debug+ WireGuard#5
    Call Trace:
     <TASK>
     dump_stack_lvl+0x47/0x70
     print_address_description.constprop.0+0x2c/0x380
     print_report+0xab/0x250
     kasan_report+0xba/0xf0
     __lock_acquire+0x182a/0x1b20
     lock_acquire+0x191/0x4b0
     down_read+0x80/0x440
     get_peer+0x140/0xcb0
     wg_get_device_dump+0x471/0x1130

Cc: stable@vger.kernel.org
Fixes: e7096c131e51 ("net: WireGuard secure network tunnel")
Reported-by: Lillian Berry <lillian@star-ark.net>
Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
Reviewed-by: Jiri Pirko <jiri@nvidia.com>
Signed-off-by: Paolo Abeni <pabeni@redhat.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
2 participants