Re: [PATCH 1/1] s390/dasd: remove ioctl_by_bdev from DASD driver
From: Stefan Haberland <sth@linux.ibm.com>
Date: 2020-05-04 08:45:46
Also in:
linux-s390, lkml
Am 30.04.20 um 16:02 schrieb Stefan Haberland:
Am 30.04.20 um 15:13 schrieb Christoph Hellwig:quoted
On Thu, Apr 30, 2020 at 01:17:54PM +0200, Stefan Haberland wrote:quoted
Remove the calls to ioctl_by_bdev from the DASD partition detection code to enable the removal of the specific code. To do so reuse the gendisk private_data pointer and not only provide a pointer to the devmap but provide a new structure containing a pointer to the devmap as well as all required information for the partition detection. This makes it independent from the dasd_information2_t structure.I think sharing the data structure in private data is pretty dangerous.Thought of this as well. This is why I check for the major number before I use the private pointer to reference the data structure. Thought this would be enough checking. Do you think this is not sufficient?quoted
In the meantime I thought of another idea - the partition code could do a symbol_get of a symbol exported by the dasd driver and use that to query the information.Then I would need to export a lot of DASD internal structures to be available in thepartition detection code if I would like to walk down our device map to findthe corresponding device for example. Not sure if this is that easy.
I did some additional research on this. What I could imagine: The gendisk->private_data pointer currently contains a pointer to the dasd_devmap structure. This one is also reachable by iterating over an exported dasd_hashlist. So I could export the dasd_hashlist symbol, iterate over it and try to find the dasd_devmap pointer I have from the gendisk->private_data pointer. This would ensure that the gendisk belongs to the DASD driver and I could use the additional information that is somehow reachable through the gendisk->private_data pointer. But again, I am not sure if this additional code and effort is needed. From my point of view checking the gendisk->major for DASD_MAJOR is OK to ensure that the device belongs to the DASD driver. What do you think?