Uploaded image for project: 'OpenVZ'
  1. OpenVZ
  2. OVZ-7039

Kernel panic: NULL dereference on allocation failure in alloc_vfsmnt()

    Details

    • Fixed in Build:
      vzkernel-3.10.0-862.3.2.vz7.61.16

      Description

      Kernel panic.

      uname -r
      3.10.0-693.21.1.vz7.48.2

      in messages i found:

      Jul 4 11:30:25 server kernel: IPv4: inet_frag_find: Fragment hash bucket list length grew over limit 128. Dropping fragment.
      Jul 4 11:30:25 server kernel: IPv4: inet_frag_find: Fragment hash bucket list length grew over limit 128. Dropping fragment.
      Jul 4 11:30:25 server kernel: IPv4: inet_frag_find: Fragment hash bucket list length grew over limit 128. Dropping fragment.
      Jul 4 11:30:25 server kernel: IPv4: inet_frag_find: Fragment hash bucket list length grew over limit 128. Dropping fragment.
      Jul 4 11:30:25 server kernel: IPv4: inet_frag_find: Fragment hash bucket list length grew over limit 128. Dropping fragment.
      Jul 4 11:30:25 server kernel: IPv4: inet_frag_find: Fragment hash bucket list length grew over limit 128. Dropping fragment.
      Jul 4 11:30:25 server kernel: IPv4: inet_frag_find: Fragment hash bucket list length grew over limit 128. Dropping fragment.
      Jul 4 11:30:25 server kernel: IPv4: inet_frag_find: Fragment hash bucket list length grew over limit 128. Dropping fragment.
      Jul 4 11:30:25 server kernel: IPv4: inet_frag_find: Fragment hash bucket list length grew over limit 128. Dropping fragment.
      Jul 4 11:30:25 server kernel: IPv4: inet_frag_find: Fragment hash bucket list length grew over limit 128. Dropping fragment.
      Jul 4 11:30:31 server kernel: net_ratelimit: 44 callbacks suppressed
      Jul 4 11:30:31 server kernel: IPv4: inet_frag_find: Fragment hash bucket list length grew over limit 128. Dropping fragment.
      Jul 4 11:30:31 server kernel: IPv4: inet_frag_find: Fragment hash bucket list length grew over limit 128. Dropping fragment.
      Jul 4 11:30:31 server kernel: IPv4: inet_frag_find: Fragment hash bucket list length grew over limit 128. Dropping fragment.
      Jul 4 11:30:31 server kernel: IPv4: inet_frag_find: Fragment hash bucket list length grew over limit 128. Dropping fragment.
      Jul 4 11:30:31 server kernel: IPv4: inet_frag_find: Fragment hash bucket list length grew over limit 128. Dropping fragment.
      Jul 4 11:30:31 server kernel: IPv4: inet_frag_find: Fragment hash bucket list length grew over limit 128. Dropping fragment.
      Jul 4 11:30:31 server kernel: IPv4: inet_frag_find: Fragment hash bucket list length grew over limit 128. Dropping fragment.
      Jul 4 11:30:31 server kernel: IPv4: inet_frag_find: Fragment hash bucket list length grew over limit 128. Dropping fragment.
      Jul 4 11:30:31 server kernel: IPv4: inet_frag_find: Fragment hash bucket list length grew over limit 128. Dropping fragment.
      Jul 4 11:30:31 server kernel: IPv4: inet_frag_find: Fragment hash bucket list length grew over limit 128. Dropping fragment.
      ^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@
      ^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@
      ^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@
      ^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@
      ^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@
      ^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@
      ^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@
      ^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@
      ^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@
      ^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@
      ^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@
      ^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@
      ^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@
      ^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@
      ^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@
      ^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@
      ^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@
      ^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@
      ^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@
      ^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@
      ^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@Jul 4 11:32:17 server kernel: microcode: microcode updated early to revision 0x428,
       date = 2014-05-29
      Jul 4 11:32:17 server kernel: Initializing cgroup subsys cpuset
      Jul 4 11:32:17 server kernel: Initializing cgroup subsys cpu
      Jul 4 11:32:17 server kernel: Initializing cgroup subsys cpuacct
      Jul 4 11:32:17 server kernel: Linux version 3.10.0-693.21.1.vz7.48.2 (AN_EMAIL) (gcc version 4.8.5 20150623 (Red Hat 4.8.5-16) (GCC) ) #1 SMP Wed May 23 10:04:13 MSK 2018
      Jul 4 11:32:17 server kernel: Command line: BOOT_IMAGE=/vmlinuz-3.10.0-693.21.1.vz7.48.2 root=UUID=60848338-0a1b-4116-a803-6dbc6ea2f206 ro crashkernel=auto quiet LANG=en_US.UTF-8 intel_pstate=disable
      Jul 4 11:32:17 server kernel: e820: BIOS-provided physical RAM map:


      And this message: Jul 4 11:30:31 server kernel: IPv4: inet_frag_find: Fragment hash bucket list length grew over limit 128. Dropping fragment. flooding messages log all the time.

      i got kernel panic twice in 2 weeks


      Also i`m attaching: vmcore-dmesg.txt and vmcore-dmesg_old.txt (old is the dmesg of older panic)

      also i have vmcore files, but length of them is ~3.8GB and ~4.6GB so let me know if you want that i will upload it.
      1. vmcore-dmesg_old.txt
        1013 kB
        Jonas Savulionis
      2. vmcore-dmesg.txt
        1018 kB
        Jonas Savulionis

        Activity

        Hide
        vvs Vasily Averin added a comment -

        Dear Jonas,
        thank you for reporting the problem,
        core dumps are not required this time,
        I've found the reason of this problem

        static struct mount *alloc_vfsmnt(const char *name)
        ...
        mnt = kmem_cache_zalloc(mnt_cache, GFP_KERNEL);
        if (mnt)

        { ... }

        ve_mount_nr_inc(mnt); <<<< mnt can be NULL here
        return mnt;

        static inline void ve_mount_nr_inc(struct mount *mnt)
        ...
        mnt->ve_owner = get_ve(ve); <<<<

        crash> struct mount.ve_owner -ox
        struct mount

        { [0x100] struct ve_struct *ve_owner; }

        [433176.667080] BUG: unable to handle kernel NULL pointer dereference at 0000000000000100

        it's our bug, we need to move ve_mount_nr_inc() call into if (mnt)

        { ... }

        section .

        Show
        vvs Vasily Averin added a comment - Dear Jonas, thank you for reporting the problem, core dumps are not required this time, I've found the reason of this problem static struct mount *alloc_vfsmnt(const char *name) ... mnt = kmem_cache_zalloc(mnt_cache, GFP_KERNEL); if (mnt) { ... } ve_mount_nr_inc(mnt); <<<< mnt can be NULL here return mnt; static inline void ve_mount_nr_inc(struct mount *mnt) ... mnt->ve_owner = get_ve(ve); <<<< crash> struct mount.ve_owner -ox struct mount { [0x100] struct ve_struct *ve_owner; } [433176.667080] BUG: unable to handle kernel NULL pointer dereference at 0000000000000100 it's our bug, we need to move ve_mount_nr_inc() call into if (mnt) { ... } section .
        Hide
        vvs Vasily Averin added a comment -

        sent to devel@openvz.org:
        [PATCH RH7] alloc_vfsmnt cleanup

        Show
        vvs Vasily Averin added a comment - sent to devel@openvz.org: [PATCH RH7] alloc_vfsmnt cleanup
        Hide
        khorenko Konstantin Khorenko added a comment -

        The commit is pushed to "branch-rh7-3.10.0-862.3.2.vz7.61.x-ovz" and will appear at https://src.openvz.org/scm/ovz/vzkernel.git
        after rh7-3.10.0-862.3.2.vz7.61.15
        ------>
        commit dd163996c7bcf04225f421446529e7f39a239ca9
        Author: Vasily Averin <vvs@virtuozzo.com>
        Date: Fri Jul 6 12:17:46 2018 +0300

        ve/fs: fix NULL dereference on allocation failure in alloc_vfsmnt()

        Show
        khorenko Konstantin Khorenko added a comment - The commit is pushed to "branch-rh7-3.10.0-862.3.2.vz7.61.x-ovz" and will appear at https://src.openvz.org/scm/ovz/vzkernel.git after rh7-3.10.0-862.3.2.vz7.61.15 ------> commit dd163996c7bcf04225f421446529e7f39a239ca9 Author: Vasily Averin <vvs@virtuozzo.com> Date: Fri Jul 6 12:17:46 2018 +0300 ve/fs: fix NULL dereference on allocation failure in alloc_vfsmnt()

          People

          • Assignee:
            khorenko Konstantin Khorenko
            Reporter:
            bacarrdy Jonas Savulionis
          • Votes:
            0 Vote for this issue
            Watchers:
            3 Start watching this issue

            Dates

            • Created:
              Updated:
              Resolved:

              Time Tracking

              Estimated:
              Original Estimate - 0 minutes
              0m
              Remaining:
              Remaining Estimate - 0 minutes
              0m
              Logged:
              Time Spent - 1 hour
              1h