{"push_id":3423392911,"size":6,"distinct_size":1,"ref":"refs/heads/net_startup","head":"5c02bae0a5db6a7eb9d8cc66aed10605157a5172","before":"99e5bcfcabcd56dfacc95a622b92aa7be950918e","commits":[{"sha":"bdc76386d3362b78faf213193299e242a43d838e","author":{"name":"Peter Krempa","email":"2cf5c04c61aa466e4a47bfedc747d17279c72ffc@redhat.com"},"message":"conf: Simplify error paths in storage source component parsers\n\nvirDomainDiskSourcePrivateDataParse and virDomainDiskSourcePRParse don't\nneed the 'cleanup' label any more thanks to VIR_XPATH_NODE_AUTORESTORE.\n\nSigned-off-by: Peter Krempa <pkrempa@redhat.com>\nReviewed-by: Ján Tomko <jtomko@redhat.com>","distinct":false,"url":"https://api.github.com/repos/zippy2/libvirt/commits/bdc76386d3362b78faf213193299e242a43d838e"},{"sha":"971872ca273422b01f44cac0f7ebcf8472a18545","author":{"name":"Peter Krempa","email":"2cf5c04c61aa466e4a47bfedc747d17279c72ffc@redhat.com"},"message":"conf: Fold private data parsing into virDomainStorageSourceParse\n\nStorage source private data can be parsed along with other components of\nprivate data rather than a separate function which is called from\nmultiple places.\n\nSigned-off-by: Peter Krempa <pkrempa@redhat.com>\nReviewed-by: Ján Tomko <jtomko@redhat.com>","distinct":false,"url":"https://api.github.com/repos/zippy2/libvirt/commits/971872ca273422b01f44cac0f7ebcf8472a18545"},{"sha":"8c08a99745ddac9f4055c008e82e68a27ed5093d","author":{"name":"Michal Privoznik","email":"83d82aaba2eed257f4814b0c239c260c4caaadf0@redhat.com"},"message":"virnwfilterbindingobj: Introduce and use virNWFilterBindingObjStealDef\n\nhttps://bugzilla.redhat.com/show_bug.cgi?id=1686927\n\nWhen trying to create a nwfilter binding via\nnwfilterBindingCreateXML() we may encounter a crash. The sequence\nof functions called is as follows:\n\n1) nwfilterBindingCreateXML() parses the XML and calls\nvirNWFilterBindingObjListAdd() which calls\nvirNWFilterBindingObjListAddLocked()\n\n2) Here, @binding is not found because binding->remove is set.\n\n3) Therefore, controls continue with creating new @binding,\nsetting its def to the one from 1) and adding it to the hash\ntable.\n\n4) This fails, because the binding is still in the hash table\n(duplicate key is detected).\n\n5) The control jumps to 'error' label where\nvirNWFilterBindingObjEndAPI() is called which frees the binding\ndefinition passed.\n\n6) Error is propagated to the caller, which calls\nvirNWFilterBindingDefFree() over the definition again.\n\nThe solution is to unset binding->def in case of failure so it's\nnot freed in step 5).\n\nSigned-off-by: Michal Privoznik <mprivozn@redhat.com>\nReviewed-by: Ján Tomko <jtomko@redhat.com>","distinct":false,"url":"https://api.github.com/repos/zippy2/libvirt/commits/8c08a99745ddac9f4055c008e82e68a27ed5093d"},{"sha":"fc65c22b73420ca2137baea7a8981d0b9f938cf1","author":{"name":"Daniel P. Berrangé","email":"bb938cf255e055ff3507f2627d214e8e62118fcf@redhat.com"},"message":"rpm: fix upgrades when RBD is disabled in a new version\n\nWe previously had to disable RBD on 32-bit platforms since Ceph has\ndropped all support for 32-bit. Unfortunately anyone with the RPM\nlibvirt-daemon-driver-storage-rbd installed on 32-bit now has a\nbroken upgrade path.\n\nTo fix this we must make libvirt-daemon-driver-storage-core\nhave an Obsoletes: libvirt-daemon-driver-storage-rbd < $VER-$REL\n\nReviewed-by: Erik Skultety <eskultet@redhat.com>\nSigned-off-by: Daniel P. Berrangé <berrange@redhat.com>","distinct":false,"url":"https://api.github.com/repos/zippy2/libvirt/commits/fc65c22b73420ca2137baea7a8981d0b9f938cf1"},{"sha":"1db9d0efbf352f40c502932d47d733ad191242f3","author":{"name":"Eric Blake","email":"a9da18479c871fe903d9590822cfe2629c6a4d11@redhat.com"},"message":"test: Avoid use-after-free on virDomainSnapshotDelete\n\nThe following virsh command was triggering a use-after-free:\n\n$ virsh -c test:///default '\n  snapshot-create-as test s1\n  snapshot-create-as test s2\n  snapshot-delete --children-only test s1\n  snapshot-current --name test'\nDomain snapshot s1 created\nDomain snapshot s2 created\nDomain snapshot s1 children deleted\n\nerror: name in virGetDomainSnapshot must not be NULL\n\nI got lucky on that run - although the error message is quite\nunexpected.  On other runs, I was able to get a core dump, and\nvalgrind confirms there is a definitive problem.\n\nThe culprit? We were inconsistent about whether we set\nvm->current_snapshot, snap->def->current, or both when updating how\nthe current snapshot was being tracked.  As a result, deletion did not\nsee that snapshot s2 was previously current, and failed to update\nvm->current_snapshot, so that the next API using the current snapshot\nfailed because it referenced stale memory for the now-gone s2 (instead\nof the intended s1).\n\nThe test driver code was copied from the qemu code (which DOES track\nboth pieces of state everywhere), but was purposefully simplified\nbecause the test driver does not have to write persistent snapshot\nstate to the file system.  But when you realize that the only reason\nsnap->def->current needs to exist is when writing out one file per\nsnapshot for qemu, it's just as easy to state that the test driver\nnever has to mess with the field (rather than chasing down which\nplaces forgot to set the field), and have vm->current_snapshot be the\nsole source of truth in the test driver.\n\nIdeally, I'd get rid of the 'current' member in virDomainSnapshotDef,\nas well as the 'current_snapshot' member in virDomainDef, and instead\ntrack the current member in virDomainSnapshotObjList, coupled with\nwriting ALL snapshot state for qemu in a single file (where I can use\n<snapshots current='...'> as a wrapper, rather than\nVIR_DOMAIN_SNAPSHOT_FORMAT_INTERNAL to output <current>1</current> XML\non a per-snapshot file basis).  But that's a bigger change, so for now\nI'm just patching things to avoid the test driver segfault.\n\nSigned-off-by: Eric Blake <eblake@redhat.com>\nReviewed-by: Ján Tomko <jtomko@redhat.com>","distinct":false,"url":"https://api.github.com/repos/zippy2/libvirt/commits/1db9d0efbf352f40c502932d47d733ad191242f3"},{"sha":"5c02bae0a5db6a7eb9d8cc66aed10605157a5172","author":{"name":"Michal Privoznik","email":"83d82aaba2eed257f4814b0c239c260c4caaadf0@redhat.com"},"message":"iptablesSetupPrivateChains: Be forgiving if a table does not exist\n\nThe way this function works is that for both iptables and\nip6tables (or their firewalld friends) and for every table\n(\"filter\", \"nat\", \"mangle\") it lists chains defined for the table\nand then calls iptablesPrivateChainCreate() over the list. The\ncallback is then supposed to find libvirt private chains and if\nnot found create rules to add them. So far so good. Problem is if\none of the tables doesn't exist (e.g. due to a module missing).\nFor instance, on my system I don't have CONFIG_IP6_NF_MANGLE\nenabled therefore I'm lacking \"mangle\" table for ip6tables. This\nmeans that the whole operation of setting up private chains fails\nbecause the whole transaction is run as \"do not ignore errors\".\n\nThe solution is to have two transactions, the first one which\njust lists chains can run ignoring errors, and the second one\nwhich then installs the private chains will run normally.\n\nIn the code, this approach is pushed to another level - every\ntable for which private chains are created is run as a separate\ntransaction. The reason is that it saves us one more variable\nwhere we would track if the second transaction was started\nalready or not; and also, it doesn't matter.\n\nSigned-off-by: Michal Privoznik <mprivozn@redhat.com>","distinct":true,"url":"https://api.github.com/repos/zippy2/libvirt/commits/5c02bae0a5db6a7eb9d8cc66aed10605157a5172"}]}
{"actor":{"display_login":"zippy2"}}