> -----Original Message----- > From: Anton Vorontsov [mailto:cbouatmai...@gmail.com] > Sent: Thursday, September 16, 2010 18:14 PM > To: Zang Roy-R61911 > Cc: Wood Scott-B07421; dedeki...@gmail.com; Lan Chunhe-B25806; linuxppc- > d...@ozlabs.org; linux-...@lists.infradead.org; a...@linux-foundation.org; > dw...@infradead.org; Gala Kumar-B11780 > Subject: Re: [PATCH 2/3 v3] P4080/mtd: Only make elbc nand driver detect nand > flash partitions > > On Thu, Sep 16, 2010 at 06:08:14PM +0800, Zang Roy-R61911 wrote: > [...] > > Interesting. > > How about this? > > #include <stdio.h> > > #include <malloc.h> > > > > char *foo; > > > > void probe(void) > > { > > char *bar = NULL; > > > > if (!foo) { > > bar = malloc(sizeof(*bar)); > > if (!bar) > > return; > > foo = bar; > > } else > > bar = foo; > > This willl work of course; but I'd write it as > > foo_lock(); > if (!foo) > foo = alloc(); > foo_unlock(); > > bar = foo; > bar->baz; But my code has some assignment for "foo" instead of a simple allocation, how about this way for my code: DEFINE_MUTEX(fsl_elbc_mutex); ... static int __devinit fsl_elbc_nand_probe(struct platform_device *dev) { ... mutex_lock(&fsl_lbc_mutex); if (!fsl_lbc_ctrl_dev->nand) { elbc_fcm_ctrl = kzalloc(sizeof(*elbc_fcm_ctrl), GFP_KERNEL); if (!elbc_fcm_ctrl) { dev_err(fsl_lbc_ctrl_dev->dev, "failed to allocate " "memory\n"); ret = -ENOMEM; goto err; }
elbc_fcm_ctrl->read_bytes = 0; elbc_fcm_ctrl->index = 0; elbc_fcm_ctrl->addr = NULL; spin_lock_init(&elbc_fcm_ctrl->controller.lock); init_waitqueue_head(&elbc_fcm_ctrl->controller.wq); fsl_lbc_ctrl_dev->nand = elbc_fcm_ctrl; } else elbc_fcm_ctrl = fsl_lbc_ctrl_dev->nand; mutex_unlock(&fsl_lbc_mutex); elbc_fcm_ctrl->chips[bank] = priv; ... } Any comment? Thanks. Roy _______________________________________________ Linuxppc-dev mailing list Linuxppc-dev@lists.ozlabs.org https://lists.ozlabs.org/listinfo/linuxppc-dev