On Mon, 2020-08-17 at 17:28 +0200, Peter Krempa wrote: > On Mon, Aug 17, 2020 at 16:26:55 +0200, Michal Privoznik wrote: > > - if ((controlFD = virDMOpen()) < 0) > > + if ((controlFD = virDMOpen()) < 0) { > > + if (controlFD == -2) { > > + /* Devmapper was available but now it isn't. Somebody > > + * must have removed the module. Reset the major > > + * number we remember. */ > > + virDMMajor = 0; > > This overwrites 'virDMMajor' without taking the mutex. 'unsigned int' on > x86_64 will be atomic, we shouldn't use a knowingly broken code pattern > without at least a proper explanation why it's okay. IIUC you're saying that you'd be okay with adding a comment that explains why this will work fine on x86_64. If so, I'd like to point out that libvirt supports many other architectures... Is the same pattern safe on those as well? -- Andrea Bolognani / Red Hat / Virtualization