struct manifest_desc *interface_desc)
 {
        struct greybus_descriptor_interface *desc_intf = interface_desc->data;
+       char *str;
 
        /* Handle the strings first--they can fail */
-       intf->vendor_string = gb_string_get(intf, desc_intf->vendor_stringid);
-       if (IS_ERR(intf->vendor_string))
+       str = gb_string_get(intf, desc_intf->vendor_stringid);
+       if (IS_ERR(str))
                return false;
+       intf->vendor_string = str;
 
-       intf->product_string = gb_string_get(intf, desc_intf->product_stringid);
-       if (IS_ERR(intf->product_string))
+       str = gb_string_get(intf, desc_intf->product_stringid);
+       if (IS_ERR(str))
                goto out_free_vendor_string;
+       intf->product_string = str;
 
        /* Release the interface descriptor, now that we're done with it */
        release_manifest_descriptor(interface_desc);