diff --git a/net/sched/sch_api.c b/net/sched/sch_api.c
index e88342fde1bc409aed6a3c86e7a628030eaac66f..cfdbfa18a95eb01deceecdad56be7de07547db2a 100644
--- a/net/sched/sch_api.c
+++ b/net/sched/sch_api.c
@@ -1019,7 +1019,8 @@ static struct Qdisc *qdisc_create(struct net_device *dev,
 		return sch;
 	}
 	/* ops->init() failed, we call ->destroy() like qdisc_create_dflt() */
-	ops->destroy(sch);
+	if (ops->destroy)
+		ops->destroy(sch);
 err_out3:
 	dev_put(dev);
 	kfree((char *) sch - sch->padded);