Bug 961252

Summary: Do not add <backend> element to TPM device will cause libvirtd crash
Product: Red Hat Enterprise Linux 7 Reporter: EricLee <bili>
Component: libvirtAssignee: Ján Tomko <jtomko>
Status: CLOSED CURRENTRELEASE QA Contact: Virtualization Bugs <virt-bugs>
Severity: high Docs Contact:
Priority: high    
Version: 7.0CC: acathrow, dyuan, jtomko, mzhan, ydu, zhwang
Target Milestone: rc   
Target Release: ---   
Hardware: x86_64   
OS: Linux   
Whiteboard:
Fixed In Version: libvirt-1.0.5-2.el7 Doc Type: Bug Fix
Doc Text:
Story Points: ---
Clone Of: Environment:
Last Closed: 2014-06-13 12:57:18 UTC Type: Bug
Regression: --- Mount Type: ---
Documentation: --- CRM:
Verified Versions: Category: ---
oVirt Team: --- RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: --- Target Upstream Version:
Embargoed:
Attachments:
Description Flags
libvirtd crash log none

Description EricLee 2013-05-09 08:57:46 UTC
Created attachment 745585 [details]
libvirtd crash log

Description
Do not add <backend> element to TPM device will cause libvirtd crash

Version:
libvirt-1.0.5-1.el7.x86_64
qemu-kvm-1.4.0-4.el7.x86_64
kernel-3.9.0-0.55.el7.x86_64

How reproducible:
100%

Steps to Reproduce:
1. Add TPM device(do not give backend element) to guest xml
    <tpm model='tpm-tis'>
      <!--backend type='passthrough'-->
        <!--device path='/dev/tpm0'/-->
      <!--/backend-->
    </tpm>

2. # virsh edit r63
error: End of file while reading data: Input/output error
Failed. Try again? [y,n,f,?]:
error: One or more references were leaked after disconnect from the hypervisor
error: Failed to reconnect to the hypervisor

3. # systemctl status libvirtd.service
libvirtd.service - Virtualization daemon
   Loaded: loaded (/usr/lib/systemd/system/libvirtd.service; enabled)
   Active: failed (Result: core-dump) since Thu 2013-05-09 02:58:45 EDT; 1min 52s ago
  Process: 3259 ExecStart=/usr/sbin/libvirtd $LIBVIRTD_ARGS (code=dumped, signal=SEGV)
   CGroup: name=systemd:/system/libvirtd.service
           └─1290 /sbin/dnsmasq --conf-file=/var/lib/libvirt/dnsmasq/default.conf

May 09 02:58:28 dhcp-66-71-17.eng.nay.redhat.com libvirtd[3259]: 2013-05-09 06:58:28.905+0000: 3376: debug : virFileClo... 14
May 09 02:58:28 dhcp-66-71-17.eng.nay.redhat.com libvirtd[3259]: 2013-05-09 06:58:28.905+0000: 3376: debug : virFileClo... 15
May 09 02:58:28 dhcp-66-71-17.eng.nay.redhat.com libvirtd[3259]: 2013-05-09 06:58:28.905+0000: 3376: debug : virFileClo... 16
May 09 02:58:28 dhcp-66-71-17.eng.nay.redhat.com libvirtd[3259]: 2013-05-09 06:58:28.905+0000: 3376: debug : virFileClo... 17
May 09 02:58:28 dhcp-66-71-17.eng.nay.redhat.com libvirtd[3259]: 2013-05-09 06:58:28.905+0000: 3376: debug : virFileClo... 18
May 09 02:58:28 dhcp-66-71-17.eng.nay.redhat.com libvirtd[3259]: 2013-05-09 06:58:28.905+0000: 3376: debug : virFileClo... 20
May 09 02:58:28 dhcp-66-71-17.eng.nay.redhat.com libvirtd[3259]: 2013-05-09 06:58:28.905+0000: 3376: debug : virFileClo... 22
May 09 02:58:28 dhcp-66-71-17.eng.nay.redhat.com libvirtd[3259]: 2013-05-09 06:58:28.908+0000: 3377: debug : virFileClo...d 3
May 09 02:58:45 dhcp-66-71-17.eng.nay.redhat.com systemd[1]: libvirtd.service: main process exited, code=dumped, statu...SEGV
May 09 02:58:45 dhcp-66-71-17.eng.nay.redhat.com systemd[1]: Unit libvirtd.service entered failed state

Actual results:
libvirtd crash

Expected results:
libvirtd should not crash

Additional info:
please see the attachment for crash libvirtd.log

Comment 2 Ján Tomko 2013-05-09 10:37:19 UTC
Upstream patch proposed:
https://www.redhat.com/archives/libvir-list/2013-May/msg00651.html

Comment 3 Ján Tomko 2013-05-09 12:31:57 UTC
Fixed upstream by:
commit 1d96440a060869fb4c26ce35fe165e6e68168885
Author:     Ján Tomko <jtomko>
AuthorDate: 2013-05-09 12:33:11 +0200
Commit:     Ján Tomko <jtomko>
CommitDate: 2013-05-09 14:25:11 +0200

    conf: don't crash on a tpm device with no backends
    
    Print an error instead of crashing when a TPM device without
    a backend is specified.
    
    Add a test for tpm device with no backend, which should fail
    with a parse error.
    
    https://bugzilla.redhat.com/show_bug.cgi?id=961252

git describe: v1.0.5-112-g1d96440

Comment 4 yanbing du 2013-05-21 05:38:57 UTC
# rpm -q libvirt
libvirt-1.0.5-2.el7.x86_64

When add a TPM device(do not give backend element) to guest xml
# virsh edit guest
error: XML error: missing TPM device backend
Failed. Try again? [y,n,f,?]:
error: XML error: missing TPM device backend
Failed. Try again? [y,n,f,?]:
error: XML error: missing TPM device backend
Failed. Try again? [y,n,f,?]:
error: XML error: missing TPM device backend
Failed. Try again? [y,n,f,?]:
error: XML error: missing TPM device backend
Failed. Try again? [y,n,f,?]:

# systemctl status libvirtd
libvirtd.service - Virtualization daemon
   Loaded: loaded (/usr/lib/systemd/system/libvirtd.service; enabled)
   Active: active (running) since Tue 2013-05-21 13:08:01 CST; 29min ago
 Main PID: 2309 (libvirtd)
   CGroup: name=systemd:/system/libvirtd.service
           ├─2198 /sbin/dnsmasq --conf-file=/var/lib/libvirt/dnsmasq/default.conf
           └─2309 /usr/sbin/libvirtd

libvirtd still running, so this bug can verify.

Comment 5 Ludek Smid 2014-06-13 12:57:18 UTC
This request was resolved in Red Hat Enterprise Linux 7.0.

Contact your manager or support representative in case you have further questions about the request.