Skip to content

Commit

Permalink
Restrict permissions of some kstats change uses of %p in zfs_dbgmsg a…
Browse files Browse the repository at this point in the history
…nd spl_dumpstack to %px

Signed-off-by: sara hartse <[email protected]>
  • Loading branch information
sara hartse committed Apr 1, 2019
1 parent f94b3cb commit 87d4f9d
Show file tree
Hide file tree
Showing 17 changed files with 31 additions and 15 deletions.
2 changes: 1 addition & 1 deletion cmd/ztest/ztest.c
Original file line number Diff line number Diff line change
Expand Up @@ -6463,7 +6463,7 @@ ztest_initialize(ztest_ds_t *zd, uint64_t id)
char *path = strdup(rand_vd->vdev_path);
boolean_t active = rand_vd->vdev_initialize_thread != NULL;

zfs_dbgmsg("vd %p, guid %llu", rand_vd, guid);
zfs_dbgmsg("vd %px, guid %llu", rand_vd, guid);
spa_config_exit(spa, SCL_VDEV, FTAG);

uint64_t cmd = ztest_random(POOL_INITIALIZE_FUNCS);
Expand Down
2 changes: 1 addition & 1 deletion include/spl/sys/debug.h
Original file line number Diff line number Diff line change
Expand Up @@ -102,7 +102,7 @@ void spl_dumpstack(void);
if (!(_verify3_left OP _verify3_right)) \
spl_panic(__FILE__, __FUNCTION__, __LINE__, \
"VERIFY3(" #LEFT " " #OP " " #RIGHT ") " \
"failed (%p " #OP " %p)\n", \
"failed (%px" #OP " %px)\n", \
(void *) (_verify3_left), \
(void *) (_verify3_right)); \
} while (0)
Expand Down
2 changes: 1 addition & 1 deletion include/spl/sys/kstat.h
Original file line number Diff line number Diff line change
Expand Up @@ -196,7 +196,7 @@ extern kstat_t *__kstat_create(const char *ks_module, int ks_instance,
extern void kstat_proc_entry_init(kstat_proc_entry_t *kpep,
const char *module, const char *name);
extern void kstat_proc_entry_delete(kstat_proc_entry_t *kpep);
extern void kstat_proc_entry_install(kstat_proc_entry_t *kpep,
extern void kstat_proc_entry_install(kstat_proc_entry_t *kpep, mode_t mode,
const struct file_operations *file_ops, void *data);

extern void __kstat_install(kstat_t *ksp);
Expand Down
1 change: 1 addition & 0 deletions include/spl/sys/procfs_list.h
Original file line number Diff line number Diff line change
Expand Up @@ -58,6 +58,7 @@ typedef struct procfs_list_node {

void procfs_list_install(const char *module,
const char *name,
mode_t mode,
procfs_list_t *procfs_list,
int (*show)(struct seq_file *f, void *p),
int (*show_header)(struct seq_file *f),
Expand Down
1 change: 1 addition & 0 deletions include/sys/zfs_context.h
Original file line number Diff line number Diff line change
Expand Up @@ -375,6 +375,7 @@ typedef struct procfs_list_node {

void procfs_list_install(const char *module,
const char *name,
mode_t mode,
procfs_list_t *procfs_list,
int (*show)(struct seq_file *f, void *p),
int (*show_header)(struct seq_file *f),
Expand Down
1 change: 1 addition & 0 deletions lib/libzpool/kernel.c
Original file line number Diff line number Diff line change
Expand Up @@ -437,6 +437,7 @@ seq_printf(struct seq_file *m, const char *fmt, ...)
void
procfs_list_install(const char *module,
const char *name,
mode_t mode,
procfs_list_t *procfs_list,
int (*show)(struct seq_file *f, void *p),
int (*show_header)(struct seq_file *f),
Expand Down
14 changes: 11 additions & 3 deletions module/spl/spl-kstat.c
Original file line number Diff line number Diff line change
Expand Up @@ -659,7 +659,7 @@ kstat_detect_collision(kstat_proc_entry_t *kpep)
* kstat.
*/
void
kstat_proc_entry_install(kstat_proc_entry_t *kpep,
kstat_proc_entry_install(kstat_proc_entry_t *kpep, mode_t mode,
const struct file_operations *file_ops, void *data)
{
kstat_module_t *module;
Expand Down Expand Up @@ -693,7 +693,7 @@ kstat_proc_entry_install(kstat_proc_entry_t *kpep,
list_add_tail(&kpep->kpe_list, &module->ksm_kstat_list);

kpep->kpe_owner = module;
kpep->kpe_proc = proc_create_data(kpep->kpe_name, 0644,
kpep->kpe_proc = proc_create_data(kpep->kpe_name, mode,
module->ksm_proc, file_ops, data);
if (kpep->kpe_proc == NULL) {
list_del_init(&kpep->kpe_list);
Expand All @@ -710,7 +710,15 @@ void
__kstat_install(kstat_t *ksp)
{
ASSERT(ksp);
kstat_proc_entry_install(&ksp->ks_proc, &proc_kstat_operations, ksp);
mode_t mode;
/* Specify permission modes for different kstats */
if (strncmp(ksp->ks_proc.kpe_name, "dbufs", KSTAT_STRLEN) == 0) {
mode = 0600;
} else {
mode = 0644;
}
kstat_proc_entry_install(
&ksp->ks_proc, mode, &proc_kstat_operations, ksp);
}
EXPORT_SYMBOL(__kstat_install);

Expand Down
3 changes: 2 additions & 1 deletion module/spl/spl-procfs-list.c
Original file line number Diff line number Diff line change
Expand Up @@ -201,6 +201,7 @@ static struct file_operations procfs_list_operations = {
void
procfs_list_install(const char *module,
const char *name,
mode_t mode,
procfs_list_t *procfs_list,
int (*show)(struct seq_file *f, void *p),
int (*show_header)(struct seq_file *f),
Expand All @@ -218,7 +219,7 @@ procfs_list_install(const char *module,
procfs_list->pl_node_offset = procfs_list_node_off;

kstat_proc_entry_init(&procfs_list->pl_kstat_entry, module, name);
kstat_proc_entry_install(&procfs_list->pl_kstat_entry,
kstat_proc_entry_install(&procfs_list->pl_kstat_entry, mode,
&procfs_list_operations, procfs_list);
}
EXPORT_SYMBOL(procfs_list_install);
Expand Down
2 changes: 1 addition & 1 deletion module/zfs/arc.c
Original file line number Diff line number Diff line change
Expand Up @@ -2266,7 +2266,7 @@ arc_buf_fill(arc_buf_t *buf, spa_t *spa, const zbookmark_phys_t *zb,
*/
if (error != 0) {
zfs_dbgmsg(
"hdr %p, compress %d, psize %d, lsize %d",
"hdr %px, compress %d, psize %d, lsize %d",
hdr, arc_hdr_get_compress(hdr),
HDR_GET_PSIZE(hdr), HDR_GET_LSIZE(hdr));
if (hash_lock != NULL)
Expand Down
2 changes: 1 addition & 1 deletion module/zfs/metaslab.c
Original file line number Diff line number Diff line change
Expand Up @@ -2633,7 +2633,7 @@ metaslab_condense(metaslab_t *msp, uint64_t txg, dmu_tx_t *tx)
ASSERT(msp->ms_loaded);


zfs_dbgmsg("condensing: txg %llu, msp[%llu] %p, vdev id %llu, "
zfs_dbgmsg("condensing: txg %llu, msp[%llu] %px, vdev id %llu, "
"spa %s, smp size %llu, segments %lu, forcing condense=%s", txg,
msp->ms_id, msp, msp->ms_group->mg_vd->vdev_id,
msp->ms_group->mg_vd->vdev_spa->spa_name,
Expand Down
2 changes: 1 addition & 1 deletion module/zfs/range_tree.c
Original file line number Diff line number Diff line change
Expand Up @@ -118,7 +118,7 @@ range_tree_stat_verify(range_tree_t *rt)

for (i = 0; i < RANGE_TREE_HISTOGRAM_SIZE; i++) {
if (hist[i] != rt->rt_histogram[i]) {
zfs_dbgmsg("i=%d, hist=%p, hist=%llu, rt_hist=%llu",
zfs_dbgmsg("i=%d, hist=%px, hist=%llu, rt_hist=%llu",
i, hist, hist[i], rt->rt_histogram[i]);
}
VERIFY3U(hist[i], ==, rt->rt_histogram[i]);
Expand Down
3 changes: 3 additions & 0 deletions module/zfs/spa_stats.c
Original file line number Diff line number Diff line change
Expand Up @@ -131,6 +131,7 @@ spa_read_history_init(spa_t *spa)
shl->procfs_list.pl_private = shl;
procfs_list_install(module,
"reads",
0600,
&shl->procfs_list,
spa_read_history_show,
spa_read_history_show_header,
Expand Down Expand Up @@ -301,6 +302,7 @@ spa_txg_history_init(spa_t *spa)
shl->procfs_list.pl_private = shl;
procfs_list_install(module,
"txgs",
0644,
&shl->procfs_list,
spa_txg_history_show,
spa_txg_history_show_header,
Expand Down Expand Up @@ -706,6 +708,7 @@ spa_mmp_history_init(spa_t *spa)
shl->procfs_list.pl_private = shl;
procfs_list_install(module,
"multihost",
0644,
&shl->procfs_list,
spa_mmp_history_show,
spa_mmp_history_show_header,
Expand Down
2 changes: 1 addition & 1 deletion module/zfs/space_map.c
Original file line number Diff line number Diff line change
Expand Up @@ -848,7 +848,7 @@ space_map_truncate(space_map_t *sm, int blocksize, dmu_tx_t *tx)
doi.doi_bonus_size != sizeof (space_map_phys_t)) ||
doi.doi_data_block_size != blocksize ||
doi.doi_metadata_block_size != 1 << space_map_ibs) {
zfs_dbgmsg("txg %llu, spa %s, sm %p, reallocating "
zfs_dbgmsg("txg %llu, spa %s, sm %px, reallocating "
"object[%llu]: old bonus %u, old blocksz %u",
dmu_tx_get_txg(tx), spa_name(spa), sm, sm->sm_object,
doi.doi_bonus_size, doi.doi_data_block_size);
Expand Down
2 changes: 1 addition & 1 deletion module/zfs/vdev_removal.c
Original file line number Diff line number Diff line change
Expand Up @@ -339,7 +339,7 @@ vdev_remove_initiate_sync(void *arg, dmu_tx_t *tx)
*/
vdev_config_dirty(vd);

zfs_dbgmsg("starting removal thread for vdev %llu (%p) in txg %llu "
zfs_dbgmsg("starting removal thread for vdev %llu (%px) in txg %llu "
"im_obj=%llu", vd->vdev_id, vd, dmu_tx_get_txg(tx),
vic->vic_mapping_object);

Expand Down
1 change: 1 addition & 0 deletions module/zfs/zfs_debug.c
Original file line number Diff line number Diff line change
Expand Up @@ -94,6 +94,7 @@ zfs_dbgmsg_init(void)
{
procfs_list_install("zfs",
"dbgmsg",
0600,
&zfs_dbgmsgs,
zfs_dbgmsg_show,
zfs_dbgmsg_show_header,
Expand Down
2 changes: 1 addition & 1 deletion module/zfs/zil.c
Original file line number Diff line number Diff line change
Expand Up @@ -3232,7 +3232,7 @@ zil_close(zilog_t *zilog)
txg_wait_synced(zilog->zl_dmu_pool, txg);

if (zilog_is_dirty(zilog))
zfs_dbgmsg("zil (%p) is dirty, txg %llu", zilog, txg);
zfs_dbgmsg("zil (%px) is dirty, txg %llu", zilog, txg);
if (txg < spa_freeze_txg(zilog->zl_spa))
VERIFY(!zilog_is_dirty(zilog));

Expand Down
4 changes: 2 additions & 2 deletions module/zfs/zio.c
Original file line number Diff line number Diff line change
Expand Up @@ -1872,7 +1872,7 @@ zio_deadman_impl(zio_t *pio, int ziodepth)
uint64_t delta = gethrtime() - pio->io_timestamp;
uint64_t failmode = spa_get_deadman_failmode(pio->io_spa);

zfs_dbgmsg("slow zio[%d]: zio=%p timestamp=%llu "
zfs_dbgmsg("slow zio[%d]: zio=%px timestamp=%llu "
"delta=%llu queued=%llu io=%llu "
"path=%s last=%llu "
"type=%d priority=%d flags=0x%x "
Expand Down Expand Up @@ -3423,7 +3423,7 @@ zio_dva_allocate(zio_t *zio)
}

if (error != 0) {
zfs_dbgmsg("%s: metaslab allocation failure: zio %p, "
zfs_dbgmsg("%s: metaslab allocation failure: zio %px, "
"size %llu, error %d", spa_name(spa), zio, zio->io_size,
error);
if (error == ENOSPC && zio->io_size > SPA_MINBLOCKSIZE)
Expand Down

0 comments on commit 87d4f9d

Please sign in to comment.