Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

Merge tag 'mkp-scsi-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/mkp/scsi

Pull iSCSI fixes from Martin Petersen:
"Three fixes for missed iSCSI verification checks (and make the sysfs
files use "sysfs_emit()" - that's what it is there for)"

* tag 'mkp-scsi-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/mkp/scsi:
scsi: iscsi: Verify lengths on passthrough PDUs
scsi: iscsi: Ensure sysfs attributes are limited to PAGE_SIZE
scsi: iscsi: Restrict sessions and handles to admin capabilities

+105 -83
+74 -74
drivers/scsi/libiscsi.c
··· 3430 3430 3431 3431 switch(param) { 3432 3432 case ISCSI_PARAM_FAST_ABORT: 3433 - len = sprintf(buf, "%d\n", session->fast_abort); 3433 + len = sysfs_emit(buf, "%d\n", session->fast_abort); 3434 3434 break; 3435 3435 case ISCSI_PARAM_ABORT_TMO: 3436 - len = sprintf(buf, "%d\n", session->abort_timeout); 3436 + len = sysfs_emit(buf, "%d\n", session->abort_timeout); 3437 3437 break; 3438 3438 case ISCSI_PARAM_LU_RESET_TMO: 3439 - len = sprintf(buf, "%d\n", session->lu_reset_timeout); 3439 + len = sysfs_emit(buf, "%d\n", session->lu_reset_timeout); 3440 3440 break; 3441 3441 case ISCSI_PARAM_TGT_RESET_TMO: 3442 - len = sprintf(buf, "%d\n", session->tgt_reset_timeout); 3442 + len = sysfs_emit(buf, "%d\n", session->tgt_reset_timeout); 3443 3443 break; 3444 3444 case ISCSI_PARAM_INITIAL_R2T_EN: 3445 - len = sprintf(buf, "%d\n", session->initial_r2t_en); 3445 + len = sysfs_emit(buf, "%d\n", session->initial_r2t_en); 3446 3446 break; 3447 3447 case ISCSI_PARAM_MAX_R2T: 3448 - len = sprintf(buf, "%hu\n", session->max_r2t); 3448 + len = sysfs_emit(buf, "%hu\n", session->max_r2t); 3449 3449 break; 3450 3450 case ISCSI_PARAM_IMM_DATA_EN: 3451 - len = sprintf(buf, "%d\n", session->imm_data_en); 3451 + len = sysfs_emit(buf, "%d\n", session->imm_data_en); 3452 3452 break; 3453 3453 case ISCSI_PARAM_FIRST_BURST: 3454 - len = sprintf(buf, "%u\n", session->first_burst); 3454 + len = sysfs_emit(buf, "%u\n", session->first_burst); 3455 3455 break; 3456 3456 case ISCSI_PARAM_MAX_BURST: 3457 - len = sprintf(buf, "%u\n", session->max_burst); 3457 + len = sysfs_emit(buf, "%u\n", session->max_burst); 3458 3458 break; 3459 3459 case ISCSI_PARAM_PDU_INORDER_EN: 3460 - len = sprintf(buf, "%d\n", session->pdu_inorder_en); 3460 + len = sysfs_emit(buf, "%d\n", session->pdu_inorder_en); 3461 3461 break; 3462 3462 case ISCSI_PARAM_DATASEQ_INORDER_EN: 3463 - len = sprintf(buf, "%d\n", session->dataseq_inorder_en); 3463 + len = sysfs_emit(buf, "%d\n", session->dataseq_inorder_en); 3464 3464 break; 3465 3465 case ISCSI_PARAM_DEF_TASKMGMT_TMO: 3466 - len = sprintf(buf, "%d\n", session->def_taskmgmt_tmo); 3466 + len = sysfs_emit(buf, "%d\n", session->def_taskmgmt_tmo); 3467 3467 break; 3468 3468 case ISCSI_PARAM_ERL: 3469 - len = sprintf(buf, "%d\n", session->erl); 3469 + len = sysfs_emit(buf, "%d\n", session->erl); 3470 3470 break; 3471 3471 case ISCSI_PARAM_TARGET_NAME: 3472 - len = sprintf(buf, "%s\n", session->targetname); 3472 + len = sysfs_emit(buf, "%s\n", session->targetname); 3473 3473 break; 3474 3474 case ISCSI_PARAM_TARGET_ALIAS: 3475 - len = sprintf(buf, "%s\n", session->targetalias); 3475 + len = sysfs_emit(buf, "%s\n", session->targetalias); 3476 3476 break; 3477 3477 case ISCSI_PARAM_TPGT: 3478 - len = sprintf(buf, "%d\n", session->tpgt); 3478 + len = sysfs_emit(buf, "%d\n", session->tpgt); 3479 3479 break; 3480 3480 case ISCSI_PARAM_USERNAME: 3481 - len = sprintf(buf, "%s\n", session->username); 3481 + len = sysfs_emit(buf, "%s\n", session->username); 3482 3482 break; 3483 3483 case ISCSI_PARAM_USERNAME_IN: 3484 - len = sprintf(buf, "%s\n", session->username_in); 3484 + len = sysfs_emit(buf, "%s\n", session->username_in); 3485 3485 break; 3486 3486 case ISCSI_PARAM_PASSWORD: 3487 - len = sprintf(buf, "%s\n", session->password); 3487 + len = sysfs_emit(buf, "%s\n", session->password); 3488 3488 break; 3489 3489 case ISCSI_PARAM_PASSWORD_IN: 3490 - len = sprintf(buf, "%s\n", session->password_in); 3490 + len = sysfs_emit(buf, "%s\n", session->password_in); 3491 3491 break; 3492 3492 case ISCSI_PARAM_IFACE_NAME: 3493 - len = sprintf(buf, "%s\n", session->ifacename); 3493 + len = sysfs_emit(buf, "%s\n", session->ifacename); 3494 3494 break; 3495 3495 case ISCSI_PARAM_INITIATOR_NAME: 3496 - len = sprintf(buf, "%s\n", session->initiatorname); 3496 + len = sysfs_emit(buf, "%s\n", session->initiatorname); 3497 3497 break; 3498 3498 case ISCSI_PARAM_BOOT_ROOT: 3499 - len = sprintf(buf, "%s\n", session->boot_root); 3499 + len = sysfs_emit(buf, "%s\n", session->boot_root); 3500 3500 break; 3501 3501 case ISCSI_PARAM_BOOT_NIC: 3502 - len = sprintf(buf, "%s\n", session->boot_nic); 3502 + len = sysfs_emit(buf, "%s\n", session->boot_nic); 3503 3503 break; 3504 3504 case ISCSI_PARAM_BOOT_TARGET: 3505 - len = sprintf(buf, "%s\n", session->boot_target); 3505 + len = sysfs_emit(buf, "%s\n", session->boot_target); 3506 3506 break; 3507 3507 case ISCSI_PARAM_AUTO_SND_TGT_DISABLE: 3508 - len = sprintf(buf, "%u\n", session->auto_snd_tgt_disable); 3508 + len = sysfs_emit(buf, "%u\n", session->auto_snd_tgt_disable); 3509 3509 break; 3510 3510 case ISCSI_PARAM_DISCOVERY_SESS: 3511 - len = sprintf(buf, "%u\n", session->discovery_sess); 3511 + len = sysfs_emit(buf, "%u\n", session->discovery_sess); 3512 3512 break; 3513 3513 case ISCSI_PARAM_PORTAL_TYPE: 3514 - len = sprintf(buf, "%s\n", session->portal_type); 3514 + len = sysfs_emit(buf, "%s\n", session->portal_type); 3515 3515 break; 3516 3516 case ISCSI_PARAM_CHAP_AUTH_EN: 3517 - len = sprintf(buf, "%u\n", session->chap_auth_en); 3517 + len = sysfs_emit(buf, "%u\n", session->chap_auth_en); 3518 3518 break; 3519 3519 case ISCSI_PARAM_DISCOVERY_LOGOUT_EN: 3520 - len = sprintf(buf, "%u\n", session->discovery_logout_en); 3520 + len = sysfs_emit(buf, "%u\n", session->discovery_logout_en); 3521 3521 break; 3522 3522 case ISCSI_PARAM_BIDI_CHAP_EN: 3523 - len = sprintf(buf, "%u\n", session->bidi_chap_en); 3523 + len = sysfs_emit(buf, "%u\n", session->bidi_chap_en); 3524 3524 break; 3525 3525 case ISCSI_PARAM_DISCOVERY_AUTH_OPTIONAL: 3526 - len = sprintf(buf, "%u\n", session->discovery_auth_optional); 3526 + len = sysfs_emit(buf, "%u\n", session->discovery_auth_optional); 3527 3527 break; 3528 3528 case ISCSI_PARAM_DEF_TIME2WAIT: 3529 - len = sprintf(buf, "%d\n", session->time2wait); 3529 + len = sysfs_emit(buf, "%d\n", session->time2wait); 3530 3530 break; 3531 3531 case ISCSI_PARAM_DEF_TIME2RETAIN: 3532 - len = sprintf(buf, "%d\n", session->time2retain); 3532 + len = sysfs_emit(buf, "%d\n", session->time2retain); 3533 3533 break; 3534 3534 case ISCSI_PARAM_TSID: 3535 - len = sprintf(buf, "%u\n", session->tsid); 3535 + len = sysfs_emit(buf, "%u\n", session->tsid); 3536 3536 break; 3537 3537 case ISCSI_PARAM_ISID: 3538 - len = sprintf(buf, "%02x%02x%02x%02x%02x%02x\n", 3538 + len = sysfs_emit(buf, "%02x%02x%02x%02x%02x%02x\n", 3539 3539 session->isid[0], session->isid[1], 3540 3540 session->isid[2], session->isid[3], 3541 3541 session->isid[4], session->isid[5]); 3542 3542 break; 3543 3543 case ISCSI_PARAM_DISCOVERY_PARENT_IDX: 3544 - len = sprintf(buf, "%u\n", session->discovery_parent_idx); 3544 + len = sysfs_emit(buf, "%u\n", session->discovery_parent_idx); 3545 3545 break; 3546 3546 case ISCSI_PARAM_DISCOVERY_PARENT_TYPE: 3547 3547 if (session->discovery_parent_type) 3548 - len = sprintf(buf, "%s\n", 3548 + len = sysfs_emit(buf, "%s\n", 3549 3549 session->discovery_parent_type); 3550 3550 else 3551 - len = sprintf(buf, "\n"); 3551 + len = sysfs_emit(buf, "\n"); 3552 3552 break; 3553 3553 default: 3554 3554 return -ENOSYS; ··· 3580 3580 case ISCSI_PARAM_CONN_ADDRESS: 3581 3581 case ISCSI_HOST_PARAM_IPADDRESS: 3582 3582 if (sin) 3583 - len = sprintf(buf, "%pI4\n", &sin->sin_addr.s_addr); 3583 + len = sysfs_emit(buf, "%pI4\n", &sin->sin_addr.s_addr); 3584 3584 else 3585 - len = sprintf(buf, "%pI6\n", &sin6->sin6_addr); 3585 + len = sysfs_emit(buf, "%pI6\n", &sin6->sin6_addr); 3586 3586 break; 3587 3587 case ISCSI_PARAM_CONN_PORT: 3588 3588 case ISCSI_PARAM_LOCAL_PORT: 3589 3589 if (sin) 3590 - len = sprintf(buf, "%hu\n", be16_to_cpu(sin->sin_port)); 3590 + len = sysfs_emit(buf, "%hu\n", be16_to_cpu(sin->sin_port)); 3591 3591 else 3592 - len = sprintf(buf, "%hu\n", 3592 + len = sysfs_emit(buf, "%hu\n", 3593 3593 be16_to_cpu(sin6->sin6_port)); 3594 3594 break; 3595 3595 default: ··· 3608 3608 3609 3609 switch(param) { 3610 3610 case ISCSI_PARAM_PING_TMO: 3611 - len = sprintf(buf, "%u\n", conn->ping_timeout); 3611 + len = sysfs_emit(buf, "%u\n", conn->ping_timeout); 3612 3612 break; 3613 3613 case ISCSI_PARAM_RECV_TMO: 3614 - len = sprintf(buf, "%u\n", conn->recv_timeout); 3614 + len = sysfs_emit(buf, "%u\n", conn->recv_timeout); 3615 3615 break; 3616 3616 case ISCSI_PARAM_MAX_RECV_DLENGTH: 3617 - len = sprintf(buf, "%u\n", conn->max_recv_dlength); 3617 + len = sysfs_emit(buf, "%u\n", conn->max_recv_dlength); 3618 3618 break; 3619 3619 case ISCSI_PARAM_MAX_XMIT_DLENGTH: 3620 - len = sprintf(buf, "%u\n", conn->max_xmit_dlength); 3620 + len = sysfs_emit(buf, "%u\n", conn->max_xmit_dlength); 3621 3621 break; 3622 3622 case ISCSI_PARAM_HDRDGST_EN: 3623 - len = sprintf(buf, "%d\n", conn->hdrdgst_en); 3623 + len = sysfs_emit(buf, "%d\n", conn->hdrdgst_en); 3624 3624 break; 3625 3625 case ISCSI_PARAM_DATADGST_EN: 3626 - len = sprintf(buf, "%d\n", conn->datadgst_en); 3626 + len = sysfs_emit(buf, "%d\n", conn->datadgst_en); 3627 3627 break; 3628 3628 case ISCSI_PARAM_IFMARKER_EN: 3629 - len = sprintf(buf, "%d\n", conn->ifmarker_en); 3629 + len = sysfs_emit(buf, "%d\n", conn->ifmarker_en); 3630 3630 break; 3631 3631 case ISCSI_PARAM_OFMARKER_EN: 3632 - len = sprintf(buf, "%d\n", conn->ofmarker_en); 3632 + len = sysfs_emit(buf, "%d\n", conn->ofmarker_en); 3633 3633 break; 3634 3634 case ISCSI_PARAM_EXP_STATSN: 3635 - len = sprintf(buf, "%u\n", conn->exp_statsn); 3635 + len = sysfs_emit(buf, "%u\n", conn->exp_statsn); 3636 3636 break; 3637 3637 case ISCSI_PARAM_PERSISTENT_PORT: 3638 - len = sprintf(buf, "%d\n", conn->persistent_port); 3638 + len = sysfs_emit(buf, "%d\n", conn->persistent_port); 3639 3639 break; 3640 3640 case ISCSI_PARAM_PERSISTENT_ADDRESS: 3641 - len = sprintf(buf, "%s\n", conn->persistent_address); 3641 + len = sysfs_emit(buf, "%s\n", conn->persistent_address); 3642 3642 break; 3643 3643 case ISCSI_PARAM_STATSN: 3644 - len = sprintf(buf, "%u\n", conn->statsn); 3644 + len = sysfs_emit(buf, "%u\n", conn->statsn); 3645 3645 break; 3646 3646 case ISCSI_PARAM_MAX_SEGMENT_SIZE: 3647 - len = sprintf(buf, "%u\n", conn->max_segment_size); 3647 + len = sysfs_emit(buf, "%u\n", conn->max_segment_size); 3648 3648 break; 3649 3649 case ISCSI_PARAM_KEEPALIVE_TMO: 3650 - len = sprintf(buf, "%u\n", conn->keepalive_tmo); 3650 + len = sysfs_emit(buf, "%u\n", conn->keepalive_tmo); 3651 3651 break; 3652 3652 case ISCSI_PARAM_LOCAL_PORT: 3653 - len = sprintf(buf, "%u\n", conn->local_port); 3653 + len = sysfs_emit(buf, "%u\n", conn->local_port); 3654 3654 break; 3655 3655 case ISCSI_PARAM_TCP_TIMESTAMP_STAT: 3656 - len = sprintf(buf, "%u\n", conn->tcp_timestamp_stat); 3656 + len = sysfs_emit(buf, "%u\n", conn->tcp_timestamp_stat); 3657 3657 break; 3658 3658 case ISCSI_PARAM_TCP_NAGLE_DISABLE: 3659 - len = sprintf(buf, "%u\n", conn->tcp_nagle_disable); 3659 + len = sysfs_emit(buf, "%u\n", conn->tcp_nagle_disable); 3660 3660 break; 3661 3661 case ISCSI_PARAM_TCP_WSF_DISABLE: 3662 - len = sprintf(buf, "%u\n", conn->tcp_wsf_disable); 3662 + len = sysfs_emit(buf, "%u\n", conn->tcp_wsf_disable); 3663 3663 break; 3664 3664 case ISCSI_PARAM_TCP_TIMER_SCALE: 3665 - len = sprintf(buf, "%u\n", conn->tcp_timer_scale); 3665 + len = sysfs_emit(buf, "%u\n", conn->tcp_timer_scale); 3666 3666 break; 3667 3667 case ISCSI_PARAM_TCP_TIMESTAMP_EN: 3668 - len = sprintf(buf, "%u\n", conn->tcp_timestamp_en); 3668 + len = sysfs_emit(buf, "%u\n", conn->tcp_timestamp_en); 3669 3669 break; 3670 3670 case ISCSI_PARAM_IP_FRAGMENT_DISABLE: 3671 - len = sprintf(buf, "%u\n", conn->fragment_disable); 3671 + len = sysfs_emit(buf, "%u\n", conn->fragment_disable); 3672 3672 break; 3673 3673 case ISCSI_PARAM_IPV4_TOS: 3674 - len = sprintf(buf, "%u\n", conn->ipv4_tos); 3674 + len = sysfs_emit(buf, "%u\n", conn->ipv4_tos); 3675 3675 break; 3676 3676 case ISCSI_PARAM_IPV6_TC: 3677 - len = sprintf(buf, "%u\n", conn->ipv6_traffic_class); 3677 + len = sysfs_emit(buf, "%u\n", conn->ipv6_traffic_class); 3678 3678 break; 3679 3679 case ISCSI_PARAM_IPV6_FLOW_LABEL: 3680 - len = sprintf(buf, "%u\n", conn->ipv6_flow_label); 3680 + len = sysfs_emit(buf, "%u\n", conn->ipv6_flow_label); 3681 3681 break; 3682 3682 case ISCSI_PARAM_IS_FW_ASSIGNED_IPV6: 3683 - len = sprintf(buf, "%u\n", conn->is_fw_assigned_ipv6); 3683 + len = sysfs_emit(buf, "%u\n", conn->is_fw_assigned_ipv6); 3684 3684 break; 3685 3685 case ISCSI_PARAM_TCP_XMIT_WSF: 3686 - len = sprintf(buf, "%u\n", conn->tcp_xmit_wsf); 3686 + len = sysfs_emit(buf, "%u\n", conn->tcp_xmit_wsf); 3687 3687 break; 3688 3688 case ISCSI_PARAM_TCP_RECV_WSF: 3689 - len = sprintf(buf, "%u\n", conn->tcp_recv_wsf); 3689 + len = sysfs_emit(buf, "%u\n", conn->tcp_recv_wsf); 3690 3690 break; 3691 3691 case ISCSI_PARAM_LOCAL_IPADDR: 3692 - len = sprintf(buf, "%s\n", conn->local_ipaddr); 3692 + len = sysfs_emit(buf, "%s\n", conn->local_ipaddr); 3693 3693 break; 3694 3694 default: 3695 3695 return -ENOSYS; ··· 3707 3707 3708 3708 switch (param) { 3709 3709 case ISCSI_HOST_PARAM_NETDEV_NAME: 3710 - len = sprintf(buf, "%s\n", ihost->netdev); 3710 + len = sysfs_emit(buf, "%s\n", ihost->netdev); 3711 3711 break; 3712 3712 case ISCSI_HOST_PARAM_HWADDRESS: 3713 - len = sprintf(buf, "%s\n", ihost->hwaddress); 3713 + len = sysfs_emit(buf, "%s\n", ihost->hwaddress); 3714 3714 break; 3715 3715 case ISCSI_HOST_PARAM_INITIATOR_NAME: 3716 - len = sprintf(buf, "%s\n", ihost->initiatorname); 3716 + len = sysfs_emit(buf, "%s\n", ihost->initiatorname); 3717 3717 break; 3718 3718 default: 3719 3719 return -ENOSYS;
+31 -9
drivers/scsi/scsi_transport_iscsi.c
··· 132 132 char *buf) 133 133 { 134 134 struct iscsi_internal *priv = dev_to_iscsi_internal(dev); 135 - return sprintf(buf, "%llu\n", (unsigned long long)iscsi_handle(priv->iscsi_transport)); 135 + 136 + if (!capable(CAP_SYS_ADMIN)) 137 + return -EACCES; 138 + return sysfs_emit(buf, "%llu\n", 139 + (unsigned long long)iscsi_handle(priv->iscsi_transport)); 136 140 } 137 141 static DEVICE_ATTR(handle, S_IRUGO, show_transport_handle, NULL); 138 142 ··· 146 142 struct device_attribute *attr,char *buf) \ 147 143 { \ 148 144 struct iscsi_internal *priv = dev_to_iscsi_internal(dev); \ 149 - return sprintf(buf, format"\n", priv->iscsi_transport->name); \ 145 + return sysfs_emit(buf, format"\n", priv->iscsi_transport->name);\ 150 146 } \ 151 147 static DEVICE_ATTR(name, S_IRUGO, show_transport_##name, NULL); 152 148 ··· 187 183 show_ep_handle(struct device *dev, struct device_attribute *attr, char *buf) 188 184 { 189 185 struct iscsi_endpoint *ep = iscsi_dev_to_endpoint(dev); 190 - return sprintf(buf, "%llu\n", (unsigned long long) ep->id); 186 + return sysfs_emit(buf, "%llu\n", (unsigned long long) ep->id); 191 187 } 192 188 static ISCSI_ATTR(ep, handle, S_IRUGO, show_ep_handle, NULL); 193 189 ··· 2884 2880 struct iscsi_cls_session *session; 2885 2881 int err = 0, value = 0; 2886 2882 2883 + if (ev->u.set_param.len > PAGE_SIZE) 2884 + return -EINVAL; 2885 + 2887 2886 session = iscsi_session_lookup(ev->u.set_param.sid); 2888 2887 conn = iscsi_conn_lookup(ev->u.set_param.sid, ev->u.set_param.cid); 2889 2888 if (!conn || !session) ··· 3033 3026 3034 3027 if (!transport->set_host_param) 3035 3028 return -ENOSYS; 3029 + 3030 + if (ev->u.set_host_param.len > PAGE_SIZE) 3031 + return -EINVAL; 3036 3032 3037 3033 shost = scsi_host_lookup(ev->u.set_host_param.host_no); 3038 3034 if (!shost) { ··· 3624 3614 { 3625 3615 int err = 0; 3626 3616 u32 portid; 3617 + u32 pdu_len; 3627 3618 struct iscsi_uevent *ev = nlmsg_data(nlh); 3628 3619 struct iscsi_transport *transport = NULL; 3629 3620 struct iscsi_internal *priv; 3630 3621 struct iscsi_cls_session *session; 3631 3622 struct iscsi_cls_conn *conn; 3632 3623 struct iscsi_endpoint *ep = NULL; 3624 + 3625 + if (!netlink_capable(skb, CAP_SYS_ADMIN)) 3626 + return -EPERM; 3633 3627 3634 3628 if (nlh->nlmsg_type == ISCSI_UEVENT_PATH_UPDATE) 3635 3629 *group = ISCSI_NL_GRP_UIP; ··· 3767 3753 err = -EINVAL; 3768 3754 break; 3769 3755 case ISCSI_UEVENT_SEND_PDU: 3756 + pdu_len = nlh->nlmsg_len - sizeof(*nlh) - sizeof(*ev); 3757 + 3758 + if ((ev->u.send_pdu.hdr_size > pdu_len) || 3759 + (ev->u.send_pdu.data_size > (pdu_len - ev->u.send_pdu.hdr_size))) { 3760 + err = -EINVAL; 3761 + break; 3762 + } 3763 + 3770 3764 conn = iscsi_conn_lookup(ev->u.send_pdu.sid, ev->u.send_pdu.cid); 3771 3765 if (conn) { 3772 3766 mutex_lock(&conn_mutex); ··· 3979 3957 conn->state < ARRAY_SIZE(connection_state_names)) 3980 3958 state = connection_state_names[conn->state]; 3981 3959 3982 - return sprintf(buf, "%s\n", state); 3960 + return sysfs_emit(buf, "%s\n", state); 3983 3961 } 3984 3962 static ISCSI_CLASS_ATTR(conn, state, S_IRUGO, show_conn_state, 3985 3963 NULL); ··· 4207 4185 char *buf) 4208 4186 { 4209 4187 struct iscsi_cls_session *session = iscsi_dev_to_session(dev->parent); 4210 - return sprintf(buf, "%s\n", iscsi_session_state_name(session->state)); 4188 + return sysfs_emit(buf, "%s\n", iscsi_session_state_name(session->state)); 4211 4189 } 4212 4190 static ISCSI_CLASS_ATTR(priv_sess, state, S_IRUGO, show_priv_session_state, 4213 4191 NULL); ··· 4216 4194 char *buf) 4217 4195 { 4218 4196 struct iscsi_cls_session *session = iscsi_dev_to_session(dev->parent); 4219 - return sprintf(buf, "%d\n", session->creator); 4197 + return sysfs_emit(buf, "%d\n", session->creator); 4220 4198 } 4221 4199 static ISCSI_CLASS_ATTR(priv_sess, creator, S_IRUGO, show_priv_session_creator, 4222 4200 NULL); ··· 4225 4203 char *buf) 4226 4204 { 4227 4205 struct iscsi_cls_session *session = iscsi_dev_to_session(dev->parent); 4228 - return sprintf(buf, "%d\n", session->target_id); 4206 + return sysfs_emit(buf, "%d\n", session->target_id); 4229 4207 } 4230 4208 static ISCSI_CLASS_ATTR(priv_sess, target_id, S_IRUGO, 4231 4209 show_priv_session_target_id, NULL); ··· 4238 4216 struct iscsi_cls_session *session = \ 4239 4217 iscsi_dev_to_session(dev->parent); \ 4240 4218 if (session->field == -1) \ 4241 - return sprintf(buf, "off\n"); \ 4242 - return sprintf(buf, format"\n", session->field); \ 4219 + return sysfs_emit(buf, "off\n"); \ 4220 + return sysfs_emit(buf, format"\n", session->field); \ 4243 4221 } 4244 4222 4245 4223 #define iscsi_priv_session_attr_store(field) \