kmemdup() may return NULL if there is not enough memory available. Check
this and bail out early in this case. While there move INIT_WORK() to
happen after we have allocated all the memory needed for the event
handling to avoid doing unnecessary work.
Signed-off-by: Xiaoke Wang <xkernel.wang@foxmail.com>
Signed-off-by: Mika Westerberg <mika.westerberg@linux.intel.com>
        if (!n)
                return;
 
-       INIT_WORK(&n->work, icm_handle_notification);
        n->pkg = kmemdup(buf, size, GFP_KERNEL);
+       if (!n->pkg) {
+               kfree(n);
+               return;
+       }
+
+       INIT_WORK(&n->work, icm_handle_notification);
        n->tb = tb;
 
        queue_work(tb->wq, &n->work);