[PATCH] dax: Remove usage of the deprecated ida_simple_xxx API

2022-09-25 Thread Bo Liu
Use ida_alloc_xxx()/ida_free() instead of
ida_simple_get()/ida_simple_remove().
The latter is deprecated and more verbose.

Signed-off-by: Bo Liu 
---
 drivers/dax/super.c | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/drivers/dax/super.c b/drivers/dax/super.c
index 9b5e2a5eb0ae..da4438f3188c 100644
--- a/drivers/dax/super.c
+++ b/drivers/dax/super.c
@@ -363,7 +363,7 @@ static void dax_free_inode(struct inode *inode)
 {
struct dax_device *dax_dev = to_dax_dev(inode);
if (inode->i_rdev)
-   ida_simple_remove(_minor_ida, iminor(inode));
+   ida_free(_minor_ida, iminor(inode));
kmem_cache_free(dax_cache, dax_dev);
 }
 
@@ -445,7 +445,7 @@ struct dax_device *alloc_dax(void *private, const struct 
dax_operations *ops)
if (WARN_ON_ONCE(ops && !ops->zero_page_range))
return ERR_PTR(-EINVAL);
 
-   minor = ida_simple_get(_minor_ida, 0, MINORMASK+1, GFP_KERNEL);
+   minor = ida_alloc_max(_minor_ida, MINORMASK, GFP_KERNEL);
if (minor < 0)
return ERR_PTR(-ENOMEM);
 
@@ -459,7 +459,7 @@ struct dax_device *alloc_dax(void *private, const struct 
dax_operations *ops)
return dax_dev;
 
  err_dev:
-   ida_simple_remove(_minor_ida, minor);
+   ida_free(_minor_ida, minor);
return ERR_PTR(-ENOMEM);
 }
 EXPORT_SYMBOL_GPL(alloc_dax);
-- 
2.27.0




[PATCH v2 1/1] dax: Check dev_set_name() return value

2022-09-20 Thread Bo Liu
It's possible that dev_set_name() returns -ENOMEM, catch and handle this.

Signed-off-by: Bo Liu 
---
 Changes from v1:
 -use put_device() replace free()

 drivers/dax/bus.c | 11 +--
 1 file changed, 9 insertions(+), 2 deletions(-)

diff --git a/drivers/dax/bus.c b/drivers/dax/bus.c
index 1dad813ee4a6..2e736c7df46c 100644
--- a/drivers/dax/bus.c
+++ b/drivers/dax/bus.c
@@ -765,7 +765,12 @@ static int devm_register_dax_mapping(struct dev_dax 
*dev_dax, int range_id)
device_initialize(dev);
dev->parent = _dax->dev;
dev->type = _mapping_type;
-   dev_set_name(dev, "mapping%d", mapping->id);
+   rc = dev_set_name(dev, "mapping%d", mapping->id);
+   if (rc) {
+   put_device(dev);
+   return rc;
+   }
+
rc = device_add(dev);
if (rc) {
put_device(dev);
@@ -1334,7 +1339,9 @@ struct dev_dax *devm_create_dev_dax(struct dev_dax_data 
*data)
dev_dax->region = dax_region;
dev = _dax->dev;
device_initialize(dev);
-   dev_set_name(dev, "dax%d.%d", dax_region->id, dev_dax->id);
+   rc = dev_set_name(dev, "dax%d.%d", dax_region->id, dev_dax->id);
+   if (rc)
+   goto err_range;
 
rc = alloc_dev_dax_range(dev_dax, dax_region->res.start, data->size);
if (rc)
-- 
2.27.0




[PATCH] nvdimm: Call ida_simple_remove() when failed

2022-08-10 Thread Bo Liu
In function nvdimm_bus_register(), when code execution fails, we should
call ida_simple_remove() to free ida.

Signed-off-by: Bo Liu 
---
 drivers/nvdimm/bus.c | 1 +
 1 file changed, 1 insertion(+)

diff --git a/drivers/nvdimm/bus.c b/drivers/nvdimm/bus.c
index b38d0355b0ac..3415dc62632b 100644
--- a/drivers/nvdimm/bus.c
+++ b/drivers/nvdimm/bus.c
@@ -371,6 +371,7 @@ struct nvdimm_bus *nvdimm_bus_register(struct device 
*parent,
return nvdimm_bus;
  err:
put_device(_bus->dev);
+   ida_simple_remove(_ida, nvdimm_bus->id);
return NULL;
 }
 EXPORT_SYMBOL_GPL(nvdimm_bus_register);
-- 
2.27.0




[PATCH] dax: Check dev_set_name() return value

2022-08-04 Thread Bo Liu
It's possible that dev_set_name() returns -ENOMEM, catch and handle this.

Signed-off-by: Bo Liu 
---
 drivers/dax/bus.c | 11 +--
 1 file changed, 9 insertions(+), 2 deletions(-)

diff --git a/drivers/dax/bus.c b/drivers/dax/bus.c
index 1dad813ee4a6..36cf245ee467 100644
--- a/drivers/dax/bus.c
+++ b/drivers/dax/bus.c
@@ -765,7 +765,12 @@ static int devm_register_dax_mapping(struct dev_dax 
*dev_dax, int range_id)
device_initialize(dev);
dev->parent = _dax->dev;
dev->type = _mapping_type;
-   dev_set_name(dev, "mapping%d", mapping->id);
+   rc = dev_set_name(dev, "mapping%d", mapping->id);
+   if (rc) {
+   kfree(mapping);
+   return rc;
+   }
+
rc = device_add(dev);
if (rc) {
put_device(dev);
@@ -1334,7 +1339,9 @@ struct dev_dax *devm_create_dev_dax(struct dev_dax_data 
*data)
dev_dax->region = dax_region;
dev = _dax->dev;
device_initialize(dev);
-   dev_set_name(dev, "dax%d.%d", dax_region->id, dev_dax->id);
+   rc = dev_set_name(dev, "dax%d.%d", dax_region->id, dev_dax->id);
+   if (rc)
+   goto err_range;
 
rc = alloc_dev_dax_range(dev_dax, dax_region->res.start, data->size);
if (rc)
-- 
2.27.0




[PATCH] sound: pci: hda: add a new hda codec

2020-12-28 Thread bo . liu
From: bo liu 

The current kernel does not support the cx11970 codec chip.
Add a codec configuration item to kernel.

Signed-off-by: bo liu 

diff --git a/sound/pci/hda/patch_conexant.c b/sound/pci/hda/patch_conexant.c
index be5000dd1585..e80fe8ba537c 100644
--- a/sound/pci/hda/patch_conexant.c
+++ b/sound/pci/hda/patch_conexant.c
@@ -1070,6 +1070,7 @@ static int patch_conexant_auto(struct hda_codec *codec)
 static const struct hda_device_id snd_hda_id_conexant[] = {
HDA_CODEC_ENTRY(0x14f11f86, "CX8070", patch_conexant_auto),
HDA_CODEC_ENTRY(0x14f12008, "CX8200", patch_conexant_auto),
+   HDA_CODEC_ENTRY(0x14f120D0, "CX11970", patch_conexant_auto),
HDA_CODEC_ENTRY(0x14f15045, "CX20549 (Venice)", patch_conexant_auto),
HDA_CODEC_ENTRY(0x14f15047, "CX20551 (Waikiki)", patch_conexant_auto),
HDA_CODEC_ENTRY(0x14f15051, "CX20561 (Hermosa)", patch_conexant_auto),
---
 sound/pci/hda/patch_conexant.c | 1 +
 1 file changed, 1 insertion(+)

diff --git a/sound/pci/hda/patch_conexant.c b/sound/pci/hda/patch_conexant.c
index be5000dd1585..e80fe8ba537c 100644
--- a/sound/pci/hda/patch_conexant.c
+++ b/sound/pci/hda/patch_conexant.c
@@ -1070,6 +1070,7 @@ static int patch_conexant_auto(struct hda_codec *codec)
 static const struct hda_device_id snd_hda_id_conexant[] = {
HDA_CODEC_ENTRY(0x14f11f86, "CX8070", patch_conexant_auto),
HDA_CODEC_ENTRY(0x14f12008, "CX8200", patch_conexant_auto),
+   HDA_CODEC_ENTRY(0x14f120D0, "CX11970", patch_conexant_auto),
HDA_CODEC_ENTRY(0x14f15045, "CX20549 (Venice)", patch_conexant_auto),
HDA_CODEC_ENTRY(0x14f15047, "CX20551 (Waikiki)", patch_conexant_auto),
HDA_CODEC_ENTRY(0x14f15051, "CX20561 (Hermosa)", patch_conexant_auto),
-- 
2.25.1