Skip to content
Snippets Groups Projects
  1. Nov 15, 2020
  2. Apr 02, 2019
    • Daniel P. Berrangé's avatar
      filemon: fix watch IDs to avoid potential wraparound issues · b4682a63
      Daniel P. Berrangé authored
      
      Watch IDs are allocated from incrementing a int counter against
      the QFileMonitor object. In very long life QEMU processes with
      a huge amount of USB MTP activity creating & deleting directories
      it is just about conceivable that the int counter can wrap
      around. This would result in incorrect behaviour of the file
      monitor watch APIs due to clashing watch IDs.
      
      Instead of trying to detect this situation, this patch changes
      the way watch IDs are allocated. It is turned into an int64_t
      variable where the high 32 bits are set from the underlying
      inotify "int" ID. This gives an ID that is guaranteed unique
      for the directory as a whole, and we can rely on the kernel
      to enforce this. QFileMonitor then sets the low 32 bits from
      a per-directory counter.
      
      The USB MTP device only sets watches on the directory as a
      whole, not files within, so there is no risk of guest
      triggered wrap around on the low 32 bits.
      
      Reviewed-by: default avatarMarc-André Lureau <marcandre.lureau@redhat.com>
      Signed-off-by: default avatarDaniel P. Berrangé <berrange@redhat.com>
      b4682a63
  3. Feb 26, 2019
Loading