Here's the fix. cdc-wdm has the same problem. The fix is the same.
Signed-off-by: Oliver Neukum <oneukum@suse.de>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
                tty_hangup(acm->tty);
 }
 
+#ifdef CONFIG_PM
 static int acm_suspend(struct usb_interface *intf, pm_message_t message)
 {
        struct acm *acm = usb_get_intfdata(intf);
        mutex_unlock(&acm->mutex);
        return rv;
 }
+
+#endif /* CONFIG_PM */
 /*
  * USB driver structure.
  */
        .name =         "cdc_acm",
        .probe =        acm_probe,
        .disconnect =   acm_disconnect,
+#ifdef CONFIG_PM
        .suspend =      acm_suspend,
        .resume =       acm_resume,
+#endif
        .id_table =     acm_ids,
+#ifdef CONFIG_PM
        .supports_autosuspend = 1,
+#endif
 };
 
 /*
 
        dev_dbg(&desc->intf->dev, "wdm%d_suspend\n", intf->minor);
 
        mutex_lock(&desc->plock);
+#ifdef CONFIG_PM
        if (interface_to_usbdev(desc->intf)->auto_pm && test_bit(WDM_IN_USE, &desc->flags)) {
                rv = -EBUSY;
        } else {
+#endif
                cancel_work_sync(&desc->rxwork);
                kill_urbs(desc);
+#ifdef CONFIG_PM
        }
+#endif
        mutex_unlock(&desc->plock);
 
        return rv;