Un-break processing of device major/minor values with fstat -n. We do
this by accessing the cdev_priv element of the cdev structure. Looking forward we need a better way to handle this, as this structure shouldn't be frobbed by userspace. Submitted by: Doug Steinwand PR: bin/88203 MFC after: 1 week Discussed with: phk
This commit is contained in:
parent
29221b42d9
commit
06f639fcfa
@ -68,6 +68,7 @@ __FBSDID("$FreeBSD$");
|
||||
#include <ufs/ufs/quota.h>
|
||||
#include <ufs/ufs/inode.h>
|
||||
#include <fs/devfs/devfs.h>
|
||||
#include <fs/devfs/devfs_int.h>
|
||||
#undef _KERNEL
|
||||
#include <nfs/nfsproto.h>
|
||||
#include <nfs/rpcv2.h>
|
||||
@ -885,11 +886,12 @@ socktrans(struct socket *sock, int i)
|
||||
dev_t
|
||||
dev2udev(struct cdev *dev)
|
||||
{
|
||||
struct cdev_priv priv;
|
||||
struct cdev si;
|
||||
|
||||
if (KVM_READ(dev, &si, sizeof si)) {
|
||||
/* XXX: FIXME! */
|
||||
return 0;
|
||||
if (KVM_READ(dev, &si, sizeof si) &&
|
||||
KVM_READ(si.si_priv, &priv, sizeof priv)) {
|
||||
return ((dev_t)priv.cdp_inode);
|
||||
} else {
|
||||
dprintf(stderr, "can't convert cdev *%p to a dev_t\n", dev);
|
||||
return -1;
|
||||
|
Loading…
Reference in New Issue
Block a user