Uploaded image for project: 'Lustre'
  1. Lustre
  2. LU-19860

Missing mutex_unlock in chlg_obd_get() error path causes deadlock

    XMLWordPrintable

Details

    • Bug
    • Resolution: Fixed
    • Medium
    • None
    • None
    • None
    • 3
    • 9223372036854775807

    Description

      chlg_obd_get() in lustre/mdc/mdc_changelog.c acquires chlg_registered_dev_lock but fails to release it when ced_obds list is empty, causing a deadlock for any subsequent caller that tries to acquire the same mutex.

       

      static inline struct obd_device* chlg_obd_get(struct chlg_registered_dev *dev)
      {
            struct obd_device *obd;
            mutex_lock(&chlg_registered_dev_lock);
            if (list_empty(&dev->ced_obds))
                return NULL;              // <-- mutex not released
            ...
            mutex_unlock(&chlg_registered_dev_lock);
            return obd;
      }

      Attachments

        Issue Links

          Activity

            People

              skoyama Sohei Koyama
              skoyama Sohei Koyama
              Votes:
              0 Vote for this issue
              Watchers:
              4 Start watching this issue

              Dates

                Created:
                Updated:
                Resolved: