From: Greg KH <gregkh@linuxfoundation.org>
To: Shay Drory <shayd@nvidia.com>
Cc: netdev@vger.kernel.org, pabeni@redhat.com, davem@davemloft.net,
kuba@kernel.org, edumazet@google.com, david.m.ertman@intel.com,
rafael@kernel.org, ira.weiny@intel.com,
linux-rdma@vger.kernel.org, leon@kernel.org, tariqt@nvidia.com,
Simon Horman <horms@kernel.org>,
Przemek Kitszel <przemyslaw.kitszel@intel.com>,
Parav Pandit <parav@nvidia.com>
Subject: Re: [PATCH net-next v9 1/2] driver core: auxiliary bus: show auxiliary device IRQs
Date: Thu, 4 Jul 2024 12:41:07 +0200 [thread overview]
Message-ID: <2024070457-creatable-heroics-94cb@gregkh> (raw)
In-Reply-To: <20240703073858.932299-2-shayd@nvidia.com>
On Wed, Jul 03, 2024 at 10:38:57AM +0300, Shay Drory wrote:
> +/**
> + * auxiliary_device_sysfs_irq_add - add a sysfs entry for the given IRQ
> + * @auxdev: auxiliary bus device to add the sysfs entry.
> + * @irq: The associated interrupt number.
> + *
> + * This function should be called after auxiliary device have successfully
> + * received the irq.
> + * The driver is responsible to add a unique irq for the auxiliary device. The
> + * driver can invoke this function from multiple thread context safely for
> + * unique irqs of the auxiliary devices. The driver must not invoke this API
> + * multiple times if the irq is already added previously.
> + *
> + * Return: zero on success or an error code on failure.
> + */
> +int auxiliary_device_sysfs_irq_add(struct auxiliary_device *auxdev, int irq)
> +{
> + struct auxiliary_irq_info *info __free(kfree) = NULL;
> + struct device *dev = &auxdev->dev;
> + char *name __free(kfree) = NULL;
> + int ret;
> +
> + ret = auxiliary_irq_dir_prepare(auxdev);
> + if (ret)
> + return ret;
> +
> + info = kzalloc(sizeof(*info), GFP_KERNEL);
> + if (!info)
> + return -ENOMEM;
> +
> + sysfs_attr_init(&info->sysfs_attr.attr);
> + name = kasprintf(GFP_KERNEL, "%d", irq);
> + if (!name)
> + return -ENOMEM;
> +
> + ret = xa_insert(&auxdev->irqs, irq, info, GFP_KERNEL);
> + if (ret)
> + return ret;
> +
> + info->sysfs_attr.attr.name = name;
> + ret = sysfs_add_file_to_group(&dev->kobj, &info->sysfs_attr.attr,
> + auxiliary_irqs_group.name);
> + if (ret)
> + goto sysfs_add_err;
> +
> + info->sysfs_attr.attr.name = no_free_ptr(name);
This assignment of a name AFTER it has been created is odd. I think I
know why you are doing this, but please make it obvious and perhaps
solve it in a cleaner way. Assigning this "deep" in a sysfs structure
is not ok.
> + xa_store(&auxdev->irqs, irq, no_free_ptr(info), GFP_KERNEL);
> + return 0;
> +
> +sysfs_add_err:
> + xa_erase(&auxdev->irqs, irq);
> + return ret;
> +}
> +EXPORT_SYMBOL_GPL(auxiliary_device_sysfs_irq_add);
> +
> +/**
> + * auxiliary_device_sysfs_irq_remove - remove a sysfs entry for the given IRQ
> + * @auxdev: auxiliary bus device to add the sysfs entry.
> + * @irq: the IRQ to remove.
> + *
> + * This function should be called to remove an IRQ sysfs entry.
> + * The driver must invoke this API when IRQ is released by the device.
> + */
> +void auxiliary_device_sysfs_irq_remove(struct auxiliary_device *auxdev, int irq)
> +{
> + struct auxiliary_irq_info *info __free(kfree) = xa_load(&auxdev->irqs, irq);
No verification that this is an actual entry before you dereferenced it?
Bold move...
greg k-h
next prev parent reply other threads:[~2024-07-04 10:41 UTC|newest]
Thread overview: 7+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-07-03 7:38 [PATCH net-next v9 0/2] Introduce auxiliary bus IRQs sysfs Shay Drory
2024-07-03 7:38 ` [PATCH net-next v9 1/2] driver core: auxiliary bus: show auxiliary device IRQs Shay Drory
2024-07-04 10:41 ` Greg KH [this message]
2024-07-05 5:35 ` Shay Drori
2024-07-05 5:53 ` Greg KH
2024-07-05 6:27 ` Przemek Kitszel
2024-07-03 7:38 ` [PATCH net-next v9 2/2] net/mlx5: Expose SFs IRQs Shay Drory
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=2024070457-creatable-heroics-94cb@gregkh \
--to=gregkh@linuxfoundation.org \
--cc=davem@davemloft.net \
--cc=david.m.ertman@intel.com \
--cc=edumazet@google.com \
--cc=horms@kernel.org \
--cc=ira.weiny@intel.com \
--cc=kuba@kernel.org \
--cc=leon@kernel.org \
--cc=linux-rdma@vger.kernel.org \
--cc=netdev@vger.kernel.org \
--cc=pabeni@redhat.com \
--cc=parav@nvidia.com \
--cc=przemyslaw.kitszel@intel.com \
--cc=rafael@kernel.org \
--cc=shayd@nvidia.com \
--cc=tariqt@nvidia.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.