Message ID | 20170419121613.12353-1-colin.king@canonical.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
On Wed, Apr 19, 2017 at 01:16:13PM +0100, Colin King wrote: > From: Colin Ian King <colin.king@canonical.com> > > ebus is being NULL checked however it is being dereferenced > earlier on the assignment bus = ebus_to_hbus(ebus). Fix this > by moving the assignment to after the NULL check on ebus to > avoid a NULL pointer dereference error. > ebus_to_hbus() doesn't dereference "ebus" it just uses it for pointer math. #define ebus_to_hbus(ebus) (&(ebus)->bus) If you pass a NULL to there, it returns an offset starting from NULL but it doesn't Oops. regards, dan carpenter
On 19/04/17 14:32, Dan Carpenter wrote: > On Wed, Apr 19, 2017 at 01:16:13PM +0100, Colin King wrote: >> From: Colin Ian King <colin.king@canonical.com> >> >> ebus is being NULL checked however it is being dereferenced >> earlier on the assignment bus = ebus_to_hbus(ebus). Fix this >> by moving the assignment to after the NULL check on ebus to >> avoid a NULL pointer dereference error. >> > > ebus_to_hbus() doesn't dereference "ebus" it just uses it for pointer > math. > > #define ebus_to_hbus(ebus) (&(ebus)->bus) > > If you pass a NULL to there, it returns an offset starting from NULL but > it doesn't Oops. Doh, brown paper bag moment for me. > > regards, > dan carpenter > >
diff --git a/sound/soc/intel/skylake/skl.c b/sound/soc/intel/skylake/skl.c index 0c57d4eaae3a..21369f60fbaa 100644 --- a/sound/soc/intel/skylake/skl.c +++ b/sound/soc/intel/skylake/skl.c @@ -818,7 +818,7 @@ static int skl_probe(struct pci_dev *pci, static void skl_shutdown(struct pci_dev *pci) { struct hdac_ext_bus *ebus = pci_get_drvdata(pci); - struct hdac_bus *bus = ebus_to_hbus(ebus); + struct hdac_bus *bus; struct hdac_stream *s; struct hdac_ext_stream *stream; struct skl *skl; @@ -826,6 +826,7 @@ static void skl_shutdown(struct pci_dev *pci) if (ebus == NULL) return; + bus = ebus_to_hbus(ebus); skl = ebus_to_skl(ebus); if (skl->init_failed)