From mboxrd@z Thu Jan 1 00:00:00 1970 From: bugzilla@dpdk.org Subject: [Bug 81] Use of rte_memseg_contig_walk in vhost_kernel.c causes deadlock Date: Tue, 14 Aug 2018 16:00:45 +0000 Message-ID: Mime-Version: 1.0 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable To: dev@dpdk.org Return-path: List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Sender: "dev" https://bugs.dpdk.org/show_bug.cgi?id=3D81 Bug ID: 81 Summary: Use of rte_memseg_contig_walk in vhost_kernel.c causes deadlock Product: DPDK Version: 18.08 Hardware: All OS: All Status: CONFIRMED Severity: normal Priority: Normal Component: vhost/virtio Assignee: dev@dpdk.org Reporter: seanbh@gmail.com Target Milestone: --- Deadlock can occur when allocating memory if a virtio_user device is in use. The execution path that causes is this is as follows: alloc_more_mem_on_socket(...); try_expand_heap(...); // RW Write Lock taken here... rte_rwlock_write_lock(&mcfg->memory_hotplug_lock); try_expand_heap_primary(...); eal_memalloc_mem_event_notify(...); virtio_user_mem_event_cb(...); vhost_kernel_ioctl(...); prepare_vhost_memory_kernel(...); rte_memseg_contig_walk(...); // Attempt to take RW Read Lock here... rte_rwlock_read_lock(&mcfg->memory_hotplug_lock); Replacing rte_memseg_contig_walk() with rte_memseg_walk_thread_unsafe() in prepare_vhost_memory_kernel() will remove the deadlock, but could cause iss= ues as prepare_vhost_memory_kernel() may also be called outside of memalloc eve= nt notify context. --=20 You are receiving this mail because: You are the assignee for the bug.=